Break Row to Carriage返回preg_replace

时间:2011-07-07 22:44:01

标签: php

我正在尝试使用preg_replace将<br><br />转换为回车(&#13;)。我的问题似乎是它找不到<br>或者不能识别我试图传入的十六进制代码。这是我的相关PHP:

preg_replace('`<br(?: /)?>(\x{13}/u)`', '$1', $content);

其他信息:我传递的字符串有&quot;,但我认为这不会影响preg_replace()

以下是一些帮助我做到这一点的链接:
http://www.webmasterworld.com/forum21/10973.htm(在工具提示中使用回车代替\n
http://us2.php.net/manual/en/reference.pcre.pattern.modifiers.php#58409(使用\x{13}代替&#13

2 个答案:

答案 0 :(得分:0)

嗯,你似乎有preg_replace格式有点奇怪。不知道为什么你这样做的反向引用呢?对于像这样简单的东西,First变量应该是正则表达式。第二个应该是替换,第三个应该是主题:

preg_replace('%<br.*?>%', '&#13;', $content);

我认为这会奏效,但我对正则表达不太好。 。*?应匹配任何字符,直到下一个&gt;

答案 1 :(得分:0)

您是否正在使用它来显示网络?如果是这样,我不确定为什么要替换回车的<br />标签。您正确发布的第一个链接的回复说明:

  

插入实体以进行回车/换行(  要么 )将在Internet Explorer for Windows中生成所需的结果,它不是任何标准的一部分,并且不受Windows上的Gecko浏览器支持。我没有测试过其他平台。

     

@choster

但要纠正您的问题。第一个参数是要匹配的模式,第二个参数是要匹配的匹配项,第三个参数是内容。

正确的实现将是这样的

echo preg_replace('/<br\s?\/?>/', '\x{13}/u', "<br> <br />");

我不确定\x{13}/u位是否会起作用,因为我没有测试过。