Я хотел бы изменить <pre>
с помощью <code>
и </pre>
с помощью </code>
.
У меня проблемы с косой чертой и регулярным выражением.
Вы можете просто использовать str_replace:
$str = str_replace(array('<pre>', '</pre>'), array('<code>', '</code>'), $str);
Если вы вынуждены использовать regexp:
$str = preg_replace("~<(/)?pre>~", "<\\1code>", $str);
Если вы хотите их заменить отдельно:
$str = preg_replace("~<pre>~", '<code>', $str); $str = preg_replace("~</pre>~", '</code>', $str);
Вам просто нужно избежать этой косой черты.
Вероятно, вам нужно избежать / s с \ s или использовать другой разделитель для выражения.
Вместо этого, как насчет использования str_replace ? <pre>
и </pre>
будут легко соответствовать, поскольку они вряд ли будут содержать какие-либо имена классов или другие атрибуты.
$text=str_replace('<pre>','<code>',$text); $text=str_replace('</pre>','</code>',$text);
Я нашел очень простое решение для замены нескольких слов в строке:
<?php $str="<pre>Hello world!</pre>"; $pattern=array(); $pattern[0]="/<pre>/"; $pattern[1]="/<\/pre>/"; $replacement=array(); $replacement[0]="<code>"; $replacement[1]="</code>"; echo preg_replace($pattern,$replacement,$str);?>
вывод :
<code>Hello world!</code>
С помощью этого скрипта вы можете заменить столько слов в строке, сколько хотите:
просто поместите слово (которое вы хотите заменить) в массив шаблонов, например:
$pattern[0]="/replaceme/";
и поместите символы (которые будут использоваться вместо замененных символов) в заменяющем массиве, например:
$replacement[0]="new_word";
Счастливое кодирование!