我想要一个正则表达式,它将删除双引号文本元素开头和结尾的额外空格。目前我没有提出一个有效的方法。
例如。变换
Martin说“oogle booogle”和Martha说“totty wottie”
到
Martin说“oogle booogle”和Martha说“totty wottie”
谢谢,
标记
答案 0 :(得分:5)
您应该能够使用/"\s*(.*?)\s*"/
这样的简单正则表达式,并替换为"$1"
。
正则表达式的解释:
"
- 一个小型"
字符\s*
- 空格/制表符/换行符重复0次或更多次(.*?)
- 一个懒惰的捕获组尽可能少地匹配,直到到达下一部分:\s*
- 空格/制表符/换行符重复0次或更多次"
- 一个小型"
字符<强>代码强>:
<?php
$string = 'Martin said " oogle booogle" and Martha said " totty wottie "';
$string = preg_replace('/"\s*(.*?)\s*"/', '"$1"', $string);
var_dump($string);
//string(58) "Martin said "oogle booogle" and Martha said "totty wottie""
?>
答案 1 :(得分:0)
$string = 'Martin said " oogle booogle" and Martha said " totty wottie "';
$str = preg_replace_callback(
'/"(.*?)"/',
function ($matches) {
return '"' . trim($matches[1]) . '"';
},
$string
);
var_dump($str);
答案 2 :(得分:0)
试试这个
$a = 'Martin said " oogle booogle" and Martha said " totty wottie "';
function Replace1($M){
//print_r($M);
return "\"".trim($M[1])."\"";
}
$new=preg_replace_callback("#\"[ ]*(.*?)[ ]*\"#","Replace1",' '.$a.' ');
echo($new);
输出
Martin said "oogle booogle" and Martha said "totty wottie"
答案 3 :(得分:0)
虽然Mark Baker提供的答案可行,但我认为这有点过于复杂。你不需要回调,一个简单的preg_replace
会做:
$string = 'Martin said " oogle booogle" and Martha said " totty wottie "';
$str = preg_replace('/"\s*(.*?)\s*"/', '"$1"', $string);