我需要更改此:

<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/

10-11 10:34