1

我再次在这里问:)

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

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

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

谢谢你们的时间,马特

4

2 回答 2

2

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

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

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

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

您可能希望将其替换\n[\r\n]互操作性。

于 2012-11-26T23:12:07.740 回答
0

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

于 2012-11-26T23:10:11.907 回答