2015-01-24 2 views
0

Я пытаюсь заменить первую строку в кодеPhp замена строк в HTML Ouput

$confirmation_message = apply_filters("pmpro_confirmation_message", $confirmation_message, false); 
    $confirmation_message = preg_replace('mysite.com', 'mysite.com?true', $str, 1); 
    echo $confirmation_message; 

Но это дает мне странные ошибки

Delimiter must not be alphanumeric or backslash line 

Вот оригинальный выход $ confirmation_message

<p><font><font class="">Visit your new site here: </font></font><a href="mysite.com/"><font><font class="">mysite.com</font></font></a></p> 

    <p><font><font class="">Manage your new site here: </font></font><a href="mysite.com/wp-admin/"><font><font class="">mysite.com/admin</font></font></a></p> 
+2

Вы неправильно регулярному_выражению в preg_replace. 'preg_replace ('/ mysite.com/', 'mysite.com?true', $ str, 1);' –

+0

Я тоже это пробовал, но это не сработало @PiotrOlaszewski –

+0

Возможный дубликат [Разделитель не должен быть буквенно-цифровым или обратная косая черта и preg \ _match] (http://stackoverflow.com/questions/7660545/delimiter-must-not-be-alphanumeric-or-backslash-and-preg-match) –

ответ

1

Как прокомментировал @Piotr Olaszewski, вам нужно добавить разделители к шаблону.

$confirmation_message = preg_replace('/mysite\.com/', 'mysite.com?true', $confirmation_message, 1); 

Обратите внимание на бегущую точку в шаблоне.

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

$confirmation_message = str_replace('mysite.com', 'mysite.com?true', $confirmation_message); 
+2

Автор хочет заменить только первое вхождение строки, не все , str_replace изменить всю найденную строку. –

+0

@PiotrOlaszewski А, я вижу. Отредактировал мой ответ. – Viktor

Смежные вопросы