0

$_GET['search']导入以下字符串:“ first second \ \ third”(“second”和“third”之间的空格只是空格,添加斜线是因为 SO 的文本区域不允许多个连续的空格)。

然后以下脚本将处理导入的字符串:

$searchString = $_GET['search'];
$searchString = preg_replace('/(\W)(\S)(\s+)/', '', $searchString);
echo $searchString . ' ';
print_r( explode(' ', $searchString) );

奇怪的是,这会导致:

first second third Array ( [0] => first [1] => second [2] => [3] => [4] => third )

即,正如预期的那样,空格从$searchStringwhen echoing 中删除,但 PHPexplode似乎“重新插入”了它们。怎么会这样?

4

2 回答 2

4

一个简单的解决方法是使用array_filter()删除空数组值:

$new_array = array_filter(explode(' ', $searchString));
于 2013-04-10T13:55:05.003 回答
3

我认为您的正则表达式并没有按照您的想法做。或者也许你应该解释它应该做什么。如果要删除多个空格,请使用以下命令:

$searchString = preg_replace('/\s\s+/', ' ', $searchString);
于 2013-04-10T14:00:42.483 回答