ошибка предварительной замены

Кто-нибудь может найти решение этой ошибки,

     $str=  trim(strip_tags($str));

$str = preg_replace("'<style[^>]*>.*</style>'siU",'',$str);

    $patterns = array();
$patterns[0] = '&nbsp; ';
$patterns[1] = ' &nbsp;';
$patterns[2] = '&nbsp;';
$replacements = array();
$replacements[0] = '';
$replacements[1] = '';
$replacements[2] = ' ';

$str    =   preg_replace($patterns, $replacements, $str);

Он показывает эту ошибку.

Сообщение: preg_replace() [function.preg-replace]: конечный разделитель '&' не найден

-Арун


person Arun SS    schedule 28.02.2011    source источник


Ответы (2)


Первый символ в вашем шаблоне интерпретируется как разделитель, и прямо сейчас PHP думает, что вы хотите использовать & в качестве разделителя. В вашем первом регулярном выражении разделителем был ', кстати. Я предполагаю, что вам действительно нужно не '&nbsp;', а '/&nbsp;/' (например, для шаблона 2), теперь / является разделителем (он не является частью самого регулярного выражения). Кстати, ваше первое регулярное выражение тоже кажется неправильным, вероятно, оно должно быть

'<style[^>]*>[^<]*</style>'

В противном случае регулярное выражение может соответствовать первому тегу и самому последнему тегу всего документа.

person Mecki    schedule 28.02.2011

У вас есть ответ в коде ошибки, регулярному выражению нужны разделители для работы.

И вы должны использовать str_replace для &nbsp;.

person soju    schedule 28.02.2011