PHP获取TEXTAREA值并转换为逗号分隔列表

时间:2014-01-06 05:29:11

标签: php

我正在使用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);

他们插入的任何内容的输出应为

'标签,标签,标签,标签,标签,标签'

例如,如果输入为“标记标记标记,标记,标记”

需要输出为'标签,标签,标签,标签,标签'

我目前为空格添加了一个额外的逗号,如果已经有逗号,这不是我想要的。而且也不会有重复。我怎么能做到这一点?

4 个答案:

答案 0 :(得分:1)

你可以

  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
    
  2. 将文本转换为单词数组

    $txt = explode(' ', $txt);
    
  3. 删除重复

    $txt = array_unique($txt); //de-duplicated
    
  4. 净化每个单词(array_map)

    $txt = array_map($your_purify_function, $txt);
    
  5. 用逗号联合词

    $txt = implode(', ', $txt);
    
  6. 我不知道你的$ 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)));

在这里,我将结果字符串转换为数组,基于以逗号分隔的值,删除所有非唯一值,然后将其转换回字符串。