我需要改变这个:
<p> </p>
进入这个:
<p class="notmobile"> </p>
在一个字符串上。看似简单,但以下不起作用:
$filecontent = preg_replace('/<p> <\/p>/', '<p class="notmobile"> </p>', $filecontent);
$filecontent = preg_replace('/^<p> <\/p>/', '<p class="notmobile"> </p>', $filecontent);
$filecontent = preg_replace('/<p>\s<\/p>/', '<p class="notmobile"> </p>', $filecontent);
$filecontent = preg_replace('/<p>\s+<\/p>/', '<p class="notmobile"> </p>', $filecontent);
$filecontent = str_replace('<p> </p>', '<p class="notmobile"> </p>', $filecontent);
为了确保我不会发疯,我在xxx上做了替换,把它变成yyy,效果很好。我认为问题是我的空间不是一个正常的空间,因为内容可能是windows字符集iso-8859-1或者它是什么(或者因为我们已经将它转换为utf-8沿线某处......)
从chome / firefox复制并粘贴空段也不起作用。
我有点卡住了:(感谢您的帮助!
更新:这是base64_output,AwMD是一个0字符串,我用它来标记上面一串p的开头。
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA8L3A + DQo8cD7CoDwvcD4NCjxwPsKgPC9wPg0KPHA + wqA8L3A + DQo8cD7CoDwvcD4NCjxwPsKgPC9wPg0KPHA + wqA8L3A + DQo8cD7CoDwvcD4NCjxwPsKgPC9wPg0KPHA + wqA8L3A + DQo8cD7CoDwvcD4NCjxwPsKgPC9wPg0KPHA + wqA8L3A + DQo8cD7CoDwvcD4NCjxwPsKgPC9wPg0KPHA + YmFzZTY0ZW5jb2Rpbmc8L3A + PC9w
* update2:我发现php中的charater ord值是:194后跟160 - 例如它是两个字符。奇怪的。 *
答案 0 :(得分:8)
确实是NBSP 11000010 10100000
的UTF-8编码\xA0
。如前所述,这有效:
= preg_replace('/<p>\p{Z}*<\/p>/u', '<p class="notmobile"> </p>', $f);
答案 1 :(得分:1)
为什么不将<p>
替换为<p class="notmobile">
?
$filecontent = str_replace("<p>", "<p class=\"notmobile\">", $filecontent);
或者您是否尝试使用<p>
替换所有对<p class="notmobile"> </p>
标记,无论内容如何?
对于中间只有一个空格的标记对,请尝试将其替换为:
$filecontent = str_replace("<p> </p>", "<p class=\"notmobile\"> </p>", $filecontent);
答案 2 :(得分:1)
它可能是一个不间断的空格
ASCII码0xA0, 160
。
尝试:
$filecontent = preg_replace('/<p>\xA0<\/p>/', '<p class="notmobile"> </p>', $filecontent);
答案 3 :(得分:0)
$filecontent = preg_replace('/<p>\xC2\xA0<\/p>/', '<p class="notmobile"> </p>', $filecontent);
当你意识到什么都没有时,很容易!现在修改有用的答案。