为什么 preg_replace 不在引用后删除 space
Why is preg_replace not removing space after a quote
给定代码:
$SearchWords=['\'"','GOLF','FACILITIES','IN','CANADA','\'"'];
$s[1] = 'SUB2,DETRAN=("';
$s[1] .= implode(' ', array_filter($SearchWords));
$s[1] .= '"*) OR A=((';
//remove space after an opening quote mark
$s[1] = preg_replace("/('['\"])[ ](\S.*)([ ])/U", "", $s[1]);
//remove space before closing quote mark
$s[1] = preg_replace("/('['\"])(\S.*)[ ]()/U", "", $s[1]);
结果应该是 SUB2,DETRAN=("'"GOLF FACILITIES IN CANADA'""*) OR A=((
而不是我得到 SUB2,DETRAN=("'" GOLF FACILITIES IN CANADA '""*) OR A=((
(注意 space 在 GOLF 之前和 CANADA 之后仍然存在)。谁能看到我做错了什么?我试过在字符 类.
中使用和不使用 spaces
PHP版本为5.5.9-1ubuntu4.14
那是因为您在双引号中使用模式并使用单转义 </code>。双引号中需要<code>\1
。
使用:
$s[1] = preg_replace("/('['\"]) (\S.*)( \1)/U", "", $s[1]);
$s[1] = preg_replace("/('['\"])(\S.*) (\1)/U", "", $s[1]);
echo $s[1];
//=> SUB2,DETRAN=("'"GOLF FACILITIES IN CANADA'""*) OR A=((
给定代码:
$SearchWords=['\'"','GOLF','FACILITIES','IN','CANADA','\'"'];
$s[1] = 'SUB2,DETRAN=("';
$s[1] .= implode(' ', array_filter($SearchWords));
$s[1] .= '"*) OR A=((';
//remove space after an opening quote mark
$s[1] = preg_replace("/('['\"])[ ](\S.*)([ ])/U", "", $s[1]);
//remove space before closing quote mark
$s[1] = preg_replace("/('['\"])(\S.*)[ ]()/U", "", $s[1]);
结果应该是 SUB2,DETRAN=("'"GOLF FACILITIES IN CANADA'""*) OR A=((
而不是我得到 SUB2,DETRAN=("'" GOLF FACILITIES IN CANADA '""*) OR A=((
(注意 space 在 GOLF 之前和 CANADA 之后仍然存在)。谁能看到我做错了什么?我试过在字符 类.
PHP版本为5.5.9-1ubuntu4.14
那是因为您在双引号中使用模式并使用单转义 </code>。双引号中需要<code>\1
。
使用:
$s[1] = preg_replace("/('['\"]) (\S.*)( \1)/U", "", $s[1]);
$s[1] = preg_replace("/('['\"])(\S.*) (\1)/U", "", $s[1]);
echo $s[1];
//=> SUB2,DETRAN=("'"GOLF FACILITIES IN CANADA'""*) OR A=((