2011-01-27 7 views
1

私はどのように...私はPHPでこれをアレイでどのようにフィルタリングしますか?

preg_replace("/\d+$/gm", "", input) 

をこのコードを使用することができますので、このタグから番号を削除したいが、私は無傷でなくてweb2.0を維持したい、この

search100 
web250 
seo36 
analytics5060 
traffic8000 
web2.0 

ようなタグを持っています私はループを使用しているときにこれをフィルタリングします。私は100k以上のタグを持っています。

+0

あなたが剥がしたくないタグの例をもっと提供できますか? 'web2.0'を特別なものにするのは明確ではありません。それは2つの数字の間の '.'ですか?数字以外の文字の前に数字があるのでしょうか? – marcog

答えて

2

あなたは、代替として、パターン/(\w)\d+$/m$1を使用することができます。

preg_replace('/(\w)\d+$/m', '$1', $input) 

このパターンは数字の列の前に少なくとも一つの単語文字があることが必要です。あなたは私の例では、あなたが別々に定義することができますいずれかのような(PHP 5.3以降で利用可能)anonymous functionを使用できない場合

array_map(function($elem) { return preg_replace('/(\w)\d+$/m', '$1', $elem); }, $arr); 

そして

array_mapを使用し、配列の各要素に対してこの置換を適用します代わりに create_functionを使用するか、 foreachを使用してください。

+0

ありがとう – leon

0

あなたの漠然とした説明と小さなサンプルから、あなただけで使用できるようだ:

$input = preg_replace("/\d\d+$/m", "", $input); 

それは最低でも2連番を探しますので、これは、2.0サフィックスを惜しみません。しかし、それを達成する別の方法は、負のlookbehindになるでしょう(?<!2\.)\d+$

関連する問題