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