我希望在这些引号之间没有空格时删除字符串中的引号
这是一个例子:
“foobar”应该是foobar
“foo bar”应该是“foo bar”
我正在使用php和preg_replace()
提前致谢。
答案 0 :(得分:1)
$outputstr = preg_replace('/"(\S+)"/', '$1', $inputstr);
答案 1 :(得分:1)
preg_replace('/"([a-z0-9]+)"/iU','$1',$string);
答案 2 :(得分:1)
发布的所有答案(包括已接受的答案)均未考虑配对,因此"foo bar"baz"spam ham"
之类的字符串将被错误处理。你需要实际需要的东西:
$str = ' "foo bar"baz"spam ham" ';
echo preg_replace_callback('~"(.+?)"~', function($m) {
return preg_match('~\s~', $m[0]) ? $m[0] : $m[1];
}, $str);
致OP:请不要接受错误的答案。这让googlers感到困惑,并降低了SO作为知识库的价值。
答案 3 :(得分:0)
或使用否定前瞻
PHP> echo preg_replace('/“(?!。?\ s +。?)/','','what”foo bar“”foobar“');
什么“foo bar”foobar
当然需要一些工作,不能使用嵌套引号等。但你明白了。