在PHP中从字符串中删除特殊字符串的最佳和最快的方法?

时间:2011-02-16 14:50:30

标签: php string

E.g

$stringOriginal = "C D E F G H I J K L M N";

$stringRemove = "E F M";

我想从$ stringOriginal中删除$ stringRemove的字符串!所以,我可以得到

$result = "C D G H I J K L N";

非常感谢!!

7 个答案:

答案 0 :(得分:3)

非preg方法

$stringOriginal = "C D E F G H I J K L M N";
$stringRemove = "E F M";

$removals = explode(' ',$stringRemove);
$result = str_replace($removals,'',$stringOriginal);
$result = str_replace('  ',' ',$result);

答案 1 :(得分:2)

使用str_replace $stringRemove爆炸成阵列。

答案 2 :(得分:2)

假设不再是而不是你问题中提供的内容,我最初的想法是使用preg_replace并查找这些字符(带有可选空格):

$stringOriginal = "C D E F G H I J K L M N";
print preg_replace('/(E|F|M)\s+?/', '', $stringOriginal);

哪些输出:C D G H I J K L N

答案 3 :(得分:1)

$result= str_replace($stringRemove, "", $stringOriginal);

但是你的$ stringRemove将是array('E', 'F', 'M');而不是你正在使用的格式。

答案 4 :(得分:1)

使用preg_replace:

//no spaces needed in the filter 'E F M' should be 'EFM' for this function
function specialFilter($body, $filter) {
  return preg_replace("/[$filter]/", '', $body);
}

//example usage
$filteredMessage = specialFilter('C D E F G H I J K L M N', 'EFM');

//if double spaces are not allowed after the filtered elements are removed run this
$filteredMessage = str_replace('  ', ' ', $filteredMessage);

见:preg_replace& str_replace

答案 5 :(得分:1)

以下是我要做的事情:

echo implode(' ', str_replace(explode(' ', $stringRemove), '', explode(' ', $stringOriginal)));

它将返回“C D G H I J K L N”,因此您仍然需要检查不正确的空格(这很容易)。

答案 6 :(得分:0)

每个人似乎都在使用str_replace,但我担心有令牌,而值可以嵌套在另一个值中。也许我错了,这有点矫枉过正,但无论如何解决方案:

$stringOriginal = "C D E F G H I J K L M N";
$stringRemove = "E F M";

var_dump(implode(' ',array_diff(explode(' ',$stringOriginal),explode(' ',$stringRemove))));

结果:

string(17) "C D G H I J K L N"