Удалить <p></p> с DOM или регулярным выражением - PullRequest
0 голосов
/ 23 июля 2011

Как я могу удалить этот тег типа p <p>&nbsp;</p>, используя DOM или регулярное выражение?

Я тоже хочу удалить несколько символов p,

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

Ответы [ 3 ]

5 голосов
/ 23 июля 2011

Если вы хотите удалить строку, которая всегда точно равна '<p>&nbsp;</p>', самое простое и быстрое решение - это, вероятно, использовать str_replace():

$new_string = str_replace('<p>&nbsp;</p>', '', $old_string);

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


Конечно, если вам нужнозаменить что-то более сложное, это не всегда одна и та же строка ... ну, это будет время для манипуляций с DOM; -)

0 голосов
/ 23 июля 2011

Если вы хотите сделать это с xpath (однако ваш пример требует str_replace), вы можете запросить &nbsp сущность в виде строки ( Demo ):

$html = '<body><p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Not empty :)</p>
</body>';

$dom = new DomDocument();
$dom->loadhtml($html);
$xpath = new DomXPath($dom);
$col = $xpath->query("//p[text()=\"\xC2\xA0\"]"); # &nbsp;
foreach($col as $e) {
    $e->parentNode->removeChild($e);
}
echo $dom->saveXML($dom->getElementsByTagName('body')->item(0));

Надеюсь, что это полезно, если вам нужно запросить &nbsp; с помощью xpath.

См. Также: Использование XPATH для поиска текста, содержащего

0 голосов
/ 23 июля 2011
preg_replace("|<p>&nbsp;</p>|", "", "<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>");
...