А клиент сообщил об ошибке, и я проследил его к этому коду, но я не могу понять, что случилось с ним:PHP preg_match возвращение нулевой
$source = "This is a test.\n\n-- a <span style='color:red'>red word</span>!\n\n- a red word!\n\n";
//$find = "- a red word!"; // This one works!
$find = "- a <span style='color:red'>red word</span>!"; // This one doesn't...
$replace = "• a <span style='color:red'>red word</span>!";
$pattern = '/^' . preg_quote($find) . '$/';
$results = preg_replace($pattern, $replace, $source);
die ("Results: " . serialize($results));
Я включил образец $find
, который работает против $find
, который не работает. Любая идея, почему uncommented $find
не работает?
(Примечание: Я на самом деле не пытаюсь разобрать HTML и поиск чисто образец, поэтому мне не нужна корректировка на подходе)
Пожалуйста, используйте правильно ['preg_quote()'] (http://php.net/manual/en/function.preg-quote.php), вы ** должны ** определить разделитель, который используете, иначе значением по умолчанию является 'NULL', поэтому попробуйте' $ pattern = '/ ^'. preg_quote ($ find, '/'). '$ /', '. Также, если вы включили отчет об ошибках или проверили журналы, вы должны были что-то заметить. – HamZa
Почему бы не использовать 'str_replace'? –