我有一个字符串,如下所示
$str = '"Mark Zuckerberg" facebook "A social utility connecting friends" profile';
我希望按照以下方式对其进行操作
$output = '"Mark Zuckerberg" OR facebook OR "A social utility connecting friends" OR profile';
我在输出中尝试的是所有单元与OR之间的组合。当一个单位不是双引号或者单引号内的完整字符串时,单位就会丢失一个单词。
我想尝试使用preg_replace。但我无法得到正确的正则表达式来匹配。请帮助!
答案 0 :(得分:3)
$result = preg_replace('/ (?=(?:[^"]*"[^"]*")*[^"]*$)/', ' OR ', $subject);
如果您的字符串中没有任何转义引号,则有效。只有当后跟偶数个双引号时,它才会替换空格。
答案 1 :(得分:0)
为什么preg_replace而不是简单的
$output = '"'.implode('" OR "',str_getcsv($str,' ')).'"';