为什么 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=((