删除两个之间的断行(\ n)

时间:2012-11-26 22:59:21

标签: php regex

我再问这里:)

假设我在PHP中有一个字符串,如下所示:

Lorem ipsum dolor sit amet, consectetur
adipiscing elit. "Sed et est eget lorem congue
eleifend. Fusce luctus"

是的,所以你看到这两个引号中的字符串---> “,对,如果在这两个引号之间存在文本,在db中,它不应该有这样的断行,有没有办法,在PHP中使用preg_replace函数的正则表达式来定位这两个符号之间的断行并删除它们?

感谢你们的时间, 玛特

2 个答案:

答案 0 :(得分:2)

有关匹配或嵌套元素的问题(在这种情况下是匹配的引号)通常对正则表达式有点尴尬。

首先,让我在这里做一个假设:你的输入中不允许使用引号内的转义引号(即你从来没有Lorem "ipsem \" dolor"或类似的东西。)

有了这个假设,你的问题可以归结为:找到一个\n,后跟一个奇数的"(计算到字符串的结尾)。为了确保这种情况,我们可以使用前瞻。为避免前导空格或尾随空格出现问题,我们可以匹配\n周围的任何空格,并将其替换为单个空格。

$result = preg_replace('/\s*\n\s*(?=[^"]*"(?:[^"]*"[^"]*")*[^"]*$)/', ' ', $input);

您可能希望将\n替换为[\r\n]以实现互操作性。

答案 1 :(得分:0)

您应该能够使用内置的转义功能,例如http://www.php.net/manual/en/mysqli.real-escape-string.php。通过这种方式,它们将被转义,这意味着您将保留信息,但它将是数据库友好的。