Я проверил учебник, основанный на системе хэштегов facebook, после вставки этого кода я заметил, что в функции preg_replace произошла ошибка, из-за которой ссылки можно нажимать.
<?php
function convert_clickable_links($message) {
$parsedMessage = preg_replace(array('/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»""'']))/', '/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '/(^|[^a-z0-9_])#([a-z0-9_]+)/i'), array('<a href="$1" target="_blank">$1</a>', '$1<a href="">@$2</a>', '$1<a href="index.php?hashtag=$2">#$2</a>'), $message);
return $parsedMessage;
}
$message = '#test #test #test this is a hashtag test';
echo convert_clickable_links($message);
?>
по какой-то причине в Dreamweaver я получаю синтаксическую ошибку, и когда я загружаю код, я получаю ноль сообщений, потому что функция не работает. Я не могу понять это вообще. Интересно, может ли кто-нибудь помочь.
Это эти
<>?«»""'']
который должен быть изменен на <>?«»“”‘’]
полная (фиксированная) строка:
$parsedMessage = preg_replace(array('/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))/', '/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '/(^|[^a-z0-9_])#([a-z0-9_]+)/i'), array('<a href="$1" target="_blank">$1</a>', '$1<a href="">@$2</a>', '$1<a href="index.php?hashtag=$2">#$2</a>'), $message);
имеющий Отчет об ошибках на бросил бы
Ошибка разбора: синтаксическая ошибка, неожиданная »])) / » (T_CONSTANT_ENCAPSED_STRING), ожидание ‘)’ в /index.php в строке 4
HTML источник:
<a href="index.php?hashtag=test">#test</a> <a href="index.php?hashtag=test">#test</a> <a href="index.php?hashtag=test">#test</a> this is a hashtag test
OP:
это было решено путем экранирования символов, которые вы изолировали —
,<>?«»""\'\']
Избавившись от одинарных кавычек, решил проблему.
,<>?«»""\'\']
Других решений пока нет …