我再问这里:)
假设我在PHP中有一个字符串,如下所示:
Lorem ipsum dolor sit amet, consectetur
adipiscing elit. "Sed et est eget lorem congue
eleifend. Fusce luctus"
是的,所以你看到这两个引号中的字符串---> “,对,如果在这两个引号之间存在文本,在db中,它不应该有这样的断行,有没有办法,在PHP中使用preg_replace函数的正则表达式来定位这两个符号之间的断行并删除它们?
感谢你们的时间, 玛特
答案 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。通过这种方式,它们将被转义,这意味着您将保留信息,但它将是数据库友好的。