Я много искал, но не нахожу подсказки или решения для моей проблемы. Проблема в том, что я не могу сопоставить слова в одинарных кавычках. Возможно, это связано с настройками сервера, php или mysql. Мне нравится знать, могу ли я обойти это.
У меня есть живой пример здесь: Fiddle with preg_replace_callback
<?php
$message = "1. test autotest test<br \>2. test auto's test<br \>3.test auto test ";
$message = preg_replace_callback("~( auto(?:'s)? )~si", function ($match)
{ return ' <a href="https://example.com">'.$match[1].'</a> '; }, $message, 1);
echo $message;
// here number 2 is correctly replaced, on my site number 3. Number 2 is not working on my site. I suspect the single quote is the problem on my site. Is there a workaround?
?>
Результат:
- тест автотест тест
- тест тест авто
- тест авто тест
Когда я внедряю этот код на своем сайте, auto's никогда не совпадает. Вот почему я думаю, что это связано с настройками сервера, PHP или MySQL. Мне нравится знать, могу ли я обойти это в своем регулярном выражении.
2 ответа
Наконец-то нашел решение. Единая кавычка была сохранена в базе данных как '
Замена ~( auto(?:'s)? )~
на ~( auto(?:'s)? )~
решила мою проблему.
Полный рабочий код:
<?php
$message = "1. test autotest test<br \>2. test auto's test<br \>3.test auto test ";
$message = preg_replace_callback("~( auto(?:'s)? )~si", function ($match)
{ return ' <a href="https://example.com">'.$match[1].'</a> '; }, $message, 1);
echo $message;
?>
Подсказка . Наконечник. Так что в подобных случаях проверьте, как символ хранится в вашей базе данных, и используйте это в своем регулярном выражении.
Просто удалите 1
в конце preg_replace (это означает, что замена только один раз):
$message = preg_replace_callback("~( auto(?:'s)? )~si", function ($match)
{ return ' <a href="https://example.com">'.$match[1].'</a> '; }, $message);
// here __^^^
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.