删除所有<;p>;PHP中只有一个空格

删除所有<;p>;PHP中只有一个空格,php,html,regex,preg-replace,str-replace,Php,Html,Regex,Preg Replace,Str Replace,我的代码有问题,如下所示: <p>Some text here</p> <p>More text here</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Some text</p> 查看页面中的内容来源: Votre trajet 第二感:含羞草报告,车站本质新街临时路线-arrêt渴望报告,arrêt Ferrière Votr

我的代码有问题,如下所示:

<p>Some text here</p>
<p>More text here</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Some text</p>
查看页面中的内容来源:


Votre trajet
第二感:含羞草报告,车站本质新街临时路线
-arrêt渴望报告,arrêt Ferrière

Votre trajet 第二感:含羞草报告,车站本质新街临时路线
-arrêt渴望报告,arrêt Ferrière


我不确定我是否理解你的意思。但是,你可以这样做:

$data = [
        "<p>Some text here</p>",
        "<p>More text here</p>",
        "<p>&nbsp;</p>",
        "<p>&nbsp;</p>",
        "<p>Some text</p>"
];

foreach($data as $key => $para) {
    if($para == "<p>&nbsp;</p>") {
        $data[$key] = ""; // new value here or just unset($data[$key]);
    }
}
$data=[
“这里有一些文字”

“, “此处有更多文本”

“, “

”, “

”, “一些文本” ]; foreach($key=>$para的数据){ 如果($para==“

”){ $data[$key]=“”;//此处有新值或刚刚取消设置($data[$key]); } }
我们试试这个,然后告诉我

  $new_str = str_replace("<p>&nbsp;</p>", '', $str);
$new\u str=str\u replace(“

”,“$str”);
您需要使用当前的实际文本,而不是html浏览器上的外观,实际文本是;而不是一个空间。试试这个php代码

$str = "<p>Some text here</p>\n<p>More text here</p>\n<p>&nbsp;</p>\n<p>&nbsp;</p>\n<p>Some text</p>";
echo "Before:\n";
echo $str;
$str = str_replace('<p>&nbsp;</p>', '', $str);
echo "\n\nAfter:\n";
echo $str;
$str=“这里的一些文本

\n这里的更多文本

\n\n\n一些文本

”; echo“在:\n之前”; echo$str; $str=str_替换(“

”,“$str”); 回显“\n\n在:\n”之后; echo$str;
有关可在数据中查找空格或非间断空格html实体的不同组合的正则表达式替代项

例子 这将删除以下组合:

<p></p>
<p> </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;</p>
<p>&nbsp; &nbsp;</p>
<p>&nbsp; </p>
<p> &nbsp;</p>
<p> &nbsp; </p>
\s<p></p>
\s<p> </p>
\s<p>&nbsp;</p>
\s<p>&nbsp;&nbsp;</p>
\s<p>&nbsp; &nbsp;</p>
\s<p>&nbsp; </p>
\s<p> &nbsp;</p>
\s<p> &nbsp; </p>
应该是


如果无法确定
中的字符,

可以使用正则表达式删除包含2个或更少字符的所有
元素。

例如,您可以使用
preg_replace('/{0,2}/',''$data)

尝试执行此操作。str_替换(“

”,“$data”)<代码>
是一个html实体,浏览器将其解释为不间断空格。PHP将其视为字符串而不是文本空间,因此您需要在替换条件中包含该实体,如@PushpeshKumarRajwanshi所示。这同样适用于所有html实体,如
©
not
(|)尝试此regexnorther str\u replace(“

”,“$data”);或(|)works@Loïc要替换的字符串末尾有一个错误的空格。
str_replace(“

应该是``str_replace(“

”``我使用的所有代码都不是用comas分隔的,它是一个变量$data,直接包含所有html(没有“和”)我的代码中的$data是一个数组。请通过执行echo$data向我显示$data变量的内容;我在控制台中得到:
Votre trajetDans les 2 sens:
-arrêt Mimosas reportél'arrêt premioire placéroute de Vannes au niveau de la station Essentials
-arrêt Cravate reportél'arrêt ferryére

$data=str_replace(“

”,“,$data”);但这是100%有效的。请执行HTMLENTES($data)并提供输出。您的解决方案确实有效,但它不适用于我在$data中拥有的内容(这是:
Votre trajetDans les 2 sens:
-arrêt Mimosas reportél'arrêt premioire placéroute de Vannes au niveau de la station sentials
-arrêt Cravate reportél'arrèt Ferrière

)@loc如果这个答案有效的话"但这对你的项目不起作用,那么你的问题就不清楚了。你应该更新你的问题,使之足够准确,这样志愿者就不会浪费时间。我用我正在使用的PHP代码和我在使用你的解决方案时得到的查看页面源代码输出更新了问题。@Loïc你使用了
strïu replace
你需要使用
 preg_replace
使用我的解决方案操作对不起,我确实尝试过使用preg_replace,但它仍然没有删除我的奇怪的
@Loïc我相信我找到了字符序列来物理替换奇怪的空格,而不是像您接受的答案那样查找任何0-2个字符,这可能会产生不希望的结果。请更新后的代码您的解决方案确实非常有效!我相信该角色是xc2或xa0。我接受了您的回答;)太感谢了!!这完全符合我的要求;)
preg_replace('/\s?<p>(\s|&nbsp;)*<\/p>/', '', $data);
<!-- TRAJET -->
    <h3>Votre trajet</h2>
    <div class="septraf"> </div>
    <p><span style="text-decoration: underline;">Dans les 2 sens</span> :<br />- arrêt Mimosas reporté à l'arrêt provisoire placé route de Vannes au niveau de la station essence<br />- arrêt Cravate reporté à l'arrêt Ferrière</p>
<p></p>
<p> </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;</p>
<p>&nbsp; &nbsp;</p>
<p>&nbsp; </p>
<p> &nbsp;</p>
<p> &nbsp; </p>
\s<p></p>
\s<p> </p>
\s<p>&nbsp;</p>
\s<p>&nbsp;&nbsp;</p>
\s<p>&nbsp; &nbsp;</p>
\s<p>&nbsp; </p>
\s<p> &nbsp;</p>
\s<p> &nbsp; </p>
str_replace('<p> </p> ', '', $data);
str_replace('<p> </p>', '', $data);
preg_replace('/\s?<p>(\s|\xc2\xa0|&nbsp;)*<\/p>/', '', $data);