E.g從PHP中的字符串中刪除特殊字符串的最好和最快的方法?
$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";
非常感謝您!
E.g從PHP中的字符串中刪除特殊字符串的最好和最快的方法?
$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";
非常感謝您!
非浸漬方法
$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);
$result= str_replace($stringRemove, "", $stringOriginal);
但是那麼你的$ stringRemove將是array('E', 'F', 'M');
而不是你正在使用的格式。
使用str_replace與$stringRemove
分解成一個數組。
使用的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);
這裏是我會做什麼:
echo implode(' ', str_replace(explode(' ', $stringRemove), '', explode(' ', $stringOriginal)));
這將返回 「CDGHIJKLN」,所以你仍然要檢查錯誤的空間(這很容易)。
每個人都好像是用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"
假設什麼比什麼在你的問題提供了更多的,我最初以爲會是使用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
難道這些總是會信嗎?還是這些詞? (如果這不是安全風險,我想我要求提供真實數據),因爲有很多選項可以實現這一點。 – 2011-02-16 14:52:51