我正在使用TEXTAREA值,我需要它始终以相同的格式输入每个输入。
这是我根据答案提供的代码测试的:
$tags = mysql_real_escape_string(strip_tags($purifier->purify($_POST['tags'])));
$tags = preg_replace('/\W/',' ', $tags);
$tags = preg_replace('/\s+/', ' ', $tags);
$tags = trim($tags);
$tags = explode(' ', $tags);
$tags = array_unique($tags);
$tags = implode(',', $tags);
$tagstoadd = mb_strtolower($tags);
他们插入的任何内容的输出应为
'标签,标签,标签,标签,标签,标签'
例如,如果输入为“标记标记标记,标记,标记”
需要输出为'标签,标签,标签,标签,标签'
我目前为空格添加了一个额外的逗号,如果已经有逗号,这不是我想要的。而且也不会有重复。我怎么能做到这一点?
答案 0 :(得分:1)
你可以
删除所有非单词字符
$txt = preg_replace('/\W/',' ', $txt); //replace non-word into space
$txt = preg_replace('/\s+/', ' ', $txt); //remove extra spaces
$txt = trim($txt);//remove trailing and heading spaces
将文本转换为单词数组
$txt = explode(' ', $txt);
删除重复
$txt = array_unique($txt); //de-duplicated
净化每个单词(array_map)
$txt = array_map($your_purify_function, $txt);
用逗号联合词
$txt = implode(', ', $txt);
我不知道你的$ purifier-> purify函数是做什么的,它是否适用于begin或each标签中的整个文本?无论如何,如果你想'净化'每个标签,你可以在PHP5中执行此操作:
$your_purify_function = function($tag) use ($purifier){
return $purifier->purify($tag);
};
答案 1 :(得分:0)
首先删除所有逗号并转换为“Space”然后将所有空格替换为“逗号”
$csvData = implode(" ", trim($input));
答案 2 :(得分:0)
您可以使用正则表达式替换所有"空格"变成逗号。 这是一个Perl正则表达式,但它应该类似于PHP。
's/\s+/,/g'
' \ S +'表示一个或多个空格字符(空格,制表符),将替换为逗号
答案 3 :(得分:0)
如果用户可以输入任何内容,那么使用正则表达式来分离单个项目将非常困难。
但是,如果用户只会使用单词(将成为标签),逗号和空格,请尝试以下操作:
$string = 'blah Blah , blAh, blah, blah blah';
$results = strtolower(preg_replace('/[\s,]+/', ',', $string));
其中$ result的值为:
"blah,blah,blah,blah,blah,blah"
然后可以进一步轻松操纵。
编辑:
如果您想删除重复值,请按照您的评论建议,执行以下操作(我假设$ results保存字符串):
$string = implode(',', array_unique(explode(',', $results)));
在这里,我将结果字符串转换为数组,基于以逗号分隔的值,删除所有非唯一值,然后将其转换回字符串。