Как использовать php preg_replace для замены тегов HTML - PullRequest
4 голосов
/ 31 июля 2010

Я бы хотел изменить <pre> на <code> и </pre> на .

У меня проблемы с косой чертой / и регулярным выражением.

Ответы [ 3 ]

13 голосов
/ 31 июля 2010

Вы можете просто использовать str_replace:

<code>$str = str_replace(array('<pre>', '
'), массив (' ', ' '), $ str);

Если вы вынуждены использовать регулярное выражение:

$str = preg_replace("~<(/)?pre>~", "<\\1code>", $str);

Если вы хотите заменить их отдельно:

<code>$str = preg_replace("~<pre>~", '<code>', $str);
$str = preg_replace("~
~ ", '', $str);

Вам просто нужно убежать от этой косой черты.

3 голосов
/ 31 июля 2010

Вам, вероятно, нужно экранировать / s с помощью \ s или использовать другой разделитель для выражения.

Вместо этого, как насчет использования str_replace ?<pre> и </pre> будет легко сопоставить, поскольку они вряд ли будут содержать имена классов или другие атрибуты.

<code>$text=str_replace('<pre>','<code>',$text);
$text=str_replace('
',' ', $ text);
1 голос
/ 16 мая 2015

Я нашел очень простое решение для замены нескольких слов в строке:

<code><?php
 $str="<pre>Hello world!
"; $ Шаблон = массив (); $ Шаблон [0] = "/
/";
$pattern[1]="/<\/pre>/";


$replacement=array();
$replacement[0]="<code>";
$replacement[1]="</code>";

echo preg_replace($pattern,$replacement,$str);?> 
</code>

выход:

 <code>Hello world!</code>

С помощью этого скрипта вы можете заменить столько слов в строке, сколько захотите:

просто поместите слово (которое вы хотите заменить) в массив шаблонов, например:

     $pattern[0]="/replaceme/"; 

и поместите символы (которые будут использоваться вместо замененных символов) в массиве замены, например:

      $replacement[0]="new_word"; 

Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...