我有這樣的如何過濾數組?
search100
web250
seo36
analytics5060
traffic8000
web2.0
我想從這個標籤刪除號碼,所以我可以在PHP
preg_replace("/\d+$/gm", "", input)
使用此代碼標籤,但我想保持web2.0
不完整的......怎麼辦當我使用循環時,我會對此進行過濾。我確實有超過100k個標籤。
我有這樣的如何過濾數組?
search100
web250
seo36
analytics5060
traffic8000
web2.0
我想從這個標籤刪除號碼,所以我可以在PHP
preg_replace("/\d+$/gm", "", input)
使用此代碼標籤,但我想保持web2.0
不完整的......怎麼辦當我使用循環時,我會對此進行過濾。我確實有超過100k個標籤。
您可以使用模式/(\w)\d+$/m
和$1
作爲替代:
preg_replace('/(\w)\d+$/m', '$1', $input)
這種模式需要有數字的序列之前至少一個字字符。
,並應用一個數組中的每個元素這種替換使用array_map
:
array_map(function($elem) { return preg_replace('/(\w)\d+$/m', '$1', $elem); }, $arr);
如果您不能使用anonymous function(可用自PHP 5.3)就像在我的例子,你可以定義一個單獨的功能,請改用create_function
或僅使用foreach
。
非常感謝你 – leon 2011-01-27 11:16:32
從你模糊的描述和小樣本,看來你可以只使用:
$input = preg_replace("/\d\d+$/m", "", $input);
這將騰出2.0後綴,因爲它看起來連續兩個數字爲最低。但另一種實現方法是負面的反面(?<!2\.)\d+$
你能提供更多你不想剝離的標籤的例子嗎?目前還不清楚是什麼讓'web2.0'變得特別。這是兩個數字之間的「。」嗎?它是否在非數字字符之前有數字? – marcog 2011-01-27 11:10:20