如何从这些逗号分隔的文本中删除数字?

时间:2011-02-17 16:52:23

标签: php string

web,search,web2.0,1,seo,networking,social
web,search,web2.0,3,seo,networking,social
web,search,web2.0,4,seo,networking,social

如何从上面的行中删除134

5 个答案:

答案 0 :(得分:2)

使用正则表达式,您可以替换“,[0-9] *,?”通过“,”也许

答案 1 :(得分:2)

var_dump(
  implode(
    ',',
    array_filter(
      explode(',',$e),
      create_function('$a','return !is_numeric($a);')
    )
  )
);

结果:

string(39) "web,search,web2.0,seo,networking,social"
string(39) "web,search,web2.0,seo,networking,social"
string(39) "web,search,web2.0,seo,networking,social"

细分:

  • expode()
    将数组拆分为令牌,用逗号分隔。
  • array_filter()
    取出你不想要的元素(数字)
  • create_function()
    懒人制作函数进行过滤的方法(每个元素都被传递以决定它是否保留或继续)
  • implode
    爆炸的对面

答案 2 :(得分:1)

PHP有一个内置的csv解析器:http://php.net/manual/en/function.fgetcsv.php

我建议使用解析器,然后使用fputcsv()将数据写回。

答案 3 :(得分:0)

它的格式是否一样?

$string = ...;
$tab = explode(',', $string);
unset($tab[3]);
$string = implode(',', $tab);

答案 4 :(得分:0)

我假设每一行都是一个字符串

$mystring="web,search,web2.0,1,seo,networking,social";
$temp = explode(",", $mystring);
$mystring="";
for($i=0;$i<count($temp);$i++) {
    if(is_int($temp[$i])==false)
$mystring+=$temp[$i];
if($i <count($temp)-1)
$mystring+=",";
}