2011-04-27 125 views
0

我有两个JavaScript替换命令,它们的工作非常完美。我需要让他们在PHP中工作。转换JavaScript替换为PHP preg_replace或str_replace

var body = body.replace(/\n\n<blockquote>/g, '<blockquote>'); 
var body = body.replace(/<\/blockquote>\n\n/g, '<\/blockquote>'); 

我已经尝试了很多很多不同的正则表达式可能性和许多str_replace的,但都失败了。我想会的工作如下,但他们不这样做:

$body = preg_replace('/\n+<blockquote>/gi', '<blockquote>', $body); 
$body = preg_replace('/</blockquote>\\n+/gi', '</blockquote>', $body); 

$body = str_replace("\n\n<blockquote>", "<blockquote>", $body); 
$body = str_replace("<blockquote>\n\n", "</blockquote>", $body); 

基本上,我只需要去掉两个新行的围绕块引用标记。是的,我已经确认他们是新线路而不是回车。

在此先感谢!

+0

是str_replace工作吗?他们对我来说看起来很好 – Ibu 2011-04-27 08:33:58

+0

不幸的是,不,他们不是......非常奇怪的行为......我一直在为此工作太多时间。换行实际上在另一段代码中添加了str_replace,但后来在用户查看后的另一段代码中,我需要删除换行符。听起来很简单,但不知道为什么简单不工作。 – Mark 2011-04-27 08:43:28

回答

0

我认为代码是正确的,问题可能是在标签之前或之前存在除换行符之外的字符。 \n可能在那里,但我很确定你也可能有一些空间。

用于调试目的试图这样做

  • 更换新线

    $身体= str_replace函数( “\ n”, '--newline--',$机构);

  • 替换您的空格。

    $ body = str_replace(“”,'--whitespace--',$ body);

  • 回声身体

    echo $ body;

如果您有任何东西,您现在就会注意到它。 祝你好运:)

+0

添加的新行。当我跑你提供了一些示例文本代码,在每个字之间显示--whitespace-- ......,这样的工作......但 - - 新闻 - 从未显示。我尝试将其更改为\ r并且结果相同......一些如何添加新行并且它们不是\ n或\ r。感谢您的想法,以这种方式检查换行符......至少它消除了一些可能性。 – Mark 2011-04-27 09:21:17

+0

最后一件事,当新行不'\ N'他们可能是'\ r \ N' – Ibu 2011-04-27 17:59:15

+0

我发现我无法取出新的生产线的原因是事实后,将它们添加编辑器(CKEditor的)。所以,现在我只需要找到一种方法来纠正编辑器的行为。谢谢您的帮助! – Mark 2011-04-29 11:33:02

1

你错过了最后调用/

$body = str_replace("</blockquote>\n\n", "</blockquote>", $body); 

用此修复程序,您的str_replace函数的解决方案应该工作。我注意到你在正则表达式中使用了i修饰符。也许你想用str_ireplace来做一个不区分大小写的替换。

+0

对不起......错字......代码中有/。 – Mark 2011-04-27 08:38:22

+0

然后你的代码正在工作。也许输入实际上是以某种方式改变的,例如换行符和类似之间有空格? – 2011-04-27 08:42:35

+0

是的,我也想过,但是当我回到javacript时,它完美地工作。文本来自textarea,然后由jquery发送到PHP文件。目前,换行符在转到php文件之前通过javascript被剥离,但是想要根据客户端请求在php文件中删除换行符。 – Mark 2011-04-27 08:48:41