我已从字符串中过滤掉一些关键字,以删除无效的关键字,但现在我有很多额外的逗号。我该怎么删除它们,所以我就这样做了:
,,,,,apples,,,,,,oranges,pears,,kiwis,,
到此
apples,oranges,pears,kiwis
这个问题很独特,因为它也会在开头和结尾处理逗号。
答案 0 :(得分:9)
$string = preg_replace("/,+/", ",", $string);
基本上,你使用正则表达式查找任何一串逗号并用一个逗号替换它们。
它真的是一个非常基本的正则表达式。你应该了解那些!
https://regex101.com/将非常有帮助。
哦,忘了:要删除前面或后面的逗号,请使用
$string = trim($string, ",");
答案 1 :(得分:7)
使用PHP的explode()和array_filter()函数。
<强>步骤:强>
1)用逗号分解字符串。
2)你会得到一个数组。
3)用array_filter()
过滤它。这将从数组中删除空白元素。
4)同样,implode()
结果数组用逗号。
5)您将从字符串中删除逗号。
<?php
$str = ',,,,,apples,,,,,,oranges,pears,,kiwis,,';
$arr = explode(',', $str);
$arr = array_filter($arr);
echo implode(',', $arr);// apples,oranges,pears,kiwis
?>
答案 2 :(得分:1)
您还可以使用preg_split
和array_filter
来实现这一目标。
$string = ",,,,,apples,,,,,,oranges,pears,,kiwis,,";
$keywords = preg_split("/[\s,]+/", $string);
$filterd = array_filter($keywords);
echo implode(",",$filterd);
<强>结果:强>
apples,oranges,pears,kiwis
<强>解释强>
From Manual: preg_split - 按正则表达式拆分字符串(PHP 4,PHP 5,PHP 7)
答案 3 :(得分:0)
如何使用preg_replace和trim?
$str=',,,,,apples,,,,,,oranges,pears,,kiwis,,';
echo trim( preg_replace('@,{2,}@',',',$str), ',');