php - 使用 preg_replace 替换空段落,无法识别空格

标签 php regex encoding

我需要改变这个:

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

相关文章:

php - 智能位置表单字段

html - 使用 windows-1252 而不是 UTF-8 有什么问题

algorithm - PDF417 条码解码如何从损坏的标签中恢复?

python - 为什么这种到 utf8 的转换不起作用?

php - Facebook SDK 错误 : Cross-site request forgery validation failed. 所需参数 "state"从持久数据中丢失

php - 来自精确表格的数据

regex - vim 正则表达式 : deleting character based on position

regex - 是否可以使用正则表达式替换来增加数字?

python - 如何使用正则表达式查找所有 Markdown 链接?

php - 基于变量的表