Как использовать php preg_replace для замены тегов HTML

Я хотел бы изменить <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"; 

Счастливое кодирование!