我需要更改这个:
<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时出现了混淆..)。
从Chrome/Firefox复制并粘贴空段落也不起作用。
我有点卡住了:( 感谢您的帮助!
更新:这里是base64_output,AwMD是一串0,我用它来标记上面一串p的开头。
*更新2:我发现在PHP中,字符ord值为194,后面跟着160——例如,它是两个字符。奇怪。*
+
改为*
并添加/ims
标志。否则,你的源文本中可能有其他内容。(例如<p>
标签中的现有属性?) - marioord()
打印空段落的每个字符。或者你的编辑器可能支持打印字符的十六进制值,例如在Vim
中,将鼠标指向字母上并输入ga
。 - Mikel/\p{Z}+/u
进行替换。 - mario