$text = "<p>keep me</p> <p>strip me </p>
$pattern = "/<[^\/>]*>(\ \;)*<\/[^>]*>/";
$text = preg_replace($pattern, '', $text);
嗨,我需要从html字符串中删除“准空”p标签。总是只有一个&amp; nbsp;作为p元素的触发器。我怎样才能用正则表达式去除它?
答案 0 :(得分:1)
根据您的示例,以下模式将匹配包含<p> </p>
的所有
块以及任何随附文本。
$text = "<p>keep me</p> <p>strip me </p>";
$pattern = "/<p>[^<]* \;[^<]*<\/p>/";
$output = preg_replace($pattern, '', $text);
如果您确实希望它仅使用<p> </p>
和空格删除
块,请改用以下模式:
$pattern = "/<p>(\s* \;\s*)+<\/p>/";
如果您只想删除<p> </p>
以及最多一定数量字符的
块,请使用以下内容(根据需要设置$maxChars
个变量) :
$maxCharsBefore = 10;
$maxCharsAfter = 10;
$pattern = "/<p>[^<]{0,".$maxCharsBefore."} \;[^<]{0,".$maxCharsAfter."}<\/p>/";
答案 1 :(得分:0)
$text = "<p>keep me</p> <p>strip me </p>";
str_replace(' ','',$text);
完成工作
哟有很多学习要做:http://www.regular-expressions.info/conditional.html
<?php
$text = "<p>keep me</p> <p>strip me </p><div class=\"someclass\">div</div>";
$newtext = "";
preg_match_all("/(\<.*?>.*?<\/.*?>)/",$text,$matches);
foreach($matches[0] as $tag)
{
if(!strstr($tag,' '))
{
$newtext .= $tag;
}
}
echo $newtext;
?>
答案 2 :(得分:0)
$text = preg_replace("!<p>(?: )*</p>!", "", $text);