正则表达式修剪引号内的新行

时间:2017-05-26 12:37:25

标签: regex

我有以下字符串:

$string = '
Test1,One line
Test2,"Two lines 

Hello"
Test3,One line
';

我想在双引号内修剪新行。所以最终结果将是:

$string = '
Test1,One line
Test2,"Two lines Hello"
Test3,One line
';

正则表达式采用什么方法?

1 个答案:

答案 0 :(得分:0)

唯一可能的方法是在双引号之间进行匹配,并仅使用preg_replace_callback将所有换行符替换为匹配项内的空字符串:

$string = '
Test1,One line
Test2,"Two lines 

Hello"
Test3,One line
';
echo preg_replace_callback('~"[^"]*"~', function($m) { 
    return preg_replace('~\R+~', '', $m[0]);
 }, $string);

请参见PHP demo

输出:

Test1,One line
Test2,"Two lines Hello"
Test3,One line