【发布时间】:2011-09-08 09:40:21
【问题描述】:
我得到了用户指定的文本变量,通常,用户应该输入必须如下所示的标签:
"food, community, relationship"
但是如果用户输入例如
"food;;[]'.'.;@$#community,,,-;,,,relationship"
脚本应将其更改为:
"food, community, relationship".
我怎样才能完成这项工作?
【问题讨论】:
我得到了用户指定的文本变量,通常,用户应该输入必须如下所示的标签:
"food, community, relationship"
但是如果用户输入例如
"food;;[]'.'.;@$#community,,,-;,,,relationship"
脚本应将其更改为:
"food, community, relationship".
我怎样才能完成这项工作?
【问题讨论】:
怎么样:
$str = "-----music,,,,,,,,games;'235@#%@#%media";
$arr = preg_split("/\W+/", $str, -1, PREG_SPLIT_NO_EMPTY);
$str = implode(', ', $arr);
echo $str,"\n";
输出:
music, games, 235, media
您可以调整 \W 以适应您需要保留的字符。
【讨论】:
-----music,,,,,,,,games;'235@#%@#%media,输出是:, music, games, 235, media,如何去掉开头的逗号?
PREG_SPLIT_NO_EMPTY。请参阅我编辑的答案。
PREG_SPLIT_NO_EMPTY 标志给出了一个没有空字段的数组,array_filter 在给定的数组上工作。我的解决方案由 2 条指令组成,array_filter 有 3 条指令:preg_split、array_filter 和 implode。我不知道哪个更好。
你可以这样使用:
$content = preg_replace("/[a-zA-Z,]/", "", $content);
$content = str_replace(",,", ",", $content);
$content = str_replace(",", " ,", $content);
【讨论】:
您可以替换所有不是字母数字的内容,如下所示:
preg_split('/\W+/','',$input);
会输出
数组 ( [0] => 食物 [1] => 社区 [2] => 关系 [3] => 1123123123)
编辑:固定正则表达式
【讨论】: