我需要改变这个:
<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 中的字符顺序值是:194 后跟 160 - 例如,它是两个字符。诡异的。 *
最佳答案
确实是NBSP \xA0
的UTF-8编码11000010 10100000
。如前所述,这有效:
= preg_replace('/<p>\p{Z}*<\/p>/u', '<p class="notmobile"> </p>', $f);
关于php - 使用 preg_replace 替换空段落,无法识别空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5346058/