我有像这样的标签
search100
web250
seo36
analytics5060
traffic8000
web2.0
我想删除此标记中的数字,以便我可以在php中使用此代码
preg_replace("/\d+$/gm", "", input)
但是我想保持web2.0
没有完整...我在使用循环时如何过滤这个...我确实有超过100k这样的标签。
答案 0 :(得分:2)
您可以使用模式/(\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
答案 1 :(得分:0)
从您的模糊描述和小样本中,您似乎可以使用:
$input = preg_replace("/\d\d+$/m", "", $input);
这将节省2.0后缀,因为它会查找两个连续的数字作为最小值。但另一种实现它的方法是负面的后视(?<!2\.)\d+$