конвертировать замену JavaScript в php preg_replace или str_replace - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть две команды замены javascript, которые прекрасно работают. Мне нужно, чтобы они работали на PHP.

var body = body.replace(/\n\n<blockquote>/g, '<blockquote>');
var body = body.replace(/<\/blockquote>\n\n/g, '<\/blockquote>');

Я перепробовал много, много разных возможностей регулярных выражений и много str_replace, но все они терпят неудачу. То, что я думал, будет работать ниже, но они не:

$body = preg_replace('/\n+<blockquote>/gi', '<blockquote>', $body);
$body = preg_replace('/</blockquote>\\n+/gi', '</blockquote>', $body);

$body = str_replace( "\n\n<blockquote>", "<blockquote>", $body);
$body = str_replace( "<blockquote>\n\n", "</blockquote>", $body);

По сути, мне просто нужно удалить две новые строки, которые окружают теги blockquote. Да, я подтвердил, что это новые строки, а не возврат каретки.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

Вы пропустили / в последнем звонке:

$body = str_replace("</blockquote>\n\n", "</blockquote>", $body);

С этим исправлением ваше решение str_replace должно работать. Я заметил, что вы используете модификатор i в своих регулярных выражениях. Возможно, вы хотите использовать str_ireplace для замены без учета регистра.

0 голосов
/ 27 апреля 2011

Я думаю, что код правильный, и проблема может заключаться в наличии символов, отличных от символов новой строки после или до вашего тега.\n может быть там, но я вполне уверен, что там тоже могут быть пробелы.

в целях отладки, пытаясь сделать это

  • Заменить новые строки

    $ body = str_replace ("\ n", '--newline--', $ body);

  • замените ваши пробелы.

    $ body = str_replace ("", '--whitespace--', $ body);

  • повторить тело

    echo $ body;

если у вас что-то есть, вы это заметите сейчас.Удачи:)

...