如何允许用户输入用逗号和空格分隔的单词? PHP

时间:2011-04-17 16:22:22

标签: php preg-match ereg

我要做的是允许用户输入由逗号和空格分隔的关键字(例如:单词,单词,单词,单词)。单词或任何内容的数量没有限制,我只想要尊重格式。谢谢!

3 个答案:

答案 0 :(得分:0)

如果你想要准确,你会使用:

$tags = explode(', ',$input);

在不使用正则表达式的情况下进行更快乐的匹配:

$tags = explode(',',$input);
for($i=0;$i<count($tags);$i++) {
    $tags[$i] = trim($tags[$i]);
}

使用正则表达式:

$tags = preg_split('/\s*,\s*/',$input,-1,PREG_SPLIT_NO_EMPTY);

答案 1 :(得分:0)

您只需使用explode将字符串拆分为部分字符即可。

$words = explode(', ',$_POST['words']);

答案 2 :(得分:0)

您可以在服务器端重新格式化用户输入,不要强迫他们担心格式化问题。只需编写功能为您完成。像

这样的东西
  $correct_input = reformatInput($user_input);

函数reformatInput()可能就像这个

  function reformatInput($inp) {
    $inparr = explode(" ", str_replace(",", " ", $inp));
    $res = array();
    foreach ($inparr as $item) if ($item != '') $res[] = $item;
    return join(", ", $res); // join() is alias of implode()
    }

如果用户的输入中没有单词,此函数将返回包含以comma+space空字符串分隔的单词的字符串

现在,如果你有像这样的用户输入,例如

  $user_input = "  word1,word2,   word3,, word4, word5 word6 word7  ,,,";

您可以使用该功能重新格式化并以正确的格式输出

  $correct_input = reformatInput($user_input);
  echo "user input ($correct_input)";

基于此示例的输出将是

  

用户输入(word1,word2,word3,word4,word5,word6,word7)

一般来说,这就是你想要的结果。

注意:您可以使用Ajax重新格式化他们的输入,输入元素的onExit事件并将其存储回(正确格式)在该输入字段中,或者在JavaScript中重写此函数并在客户端执行此操作,但是在这种情况下,您应该再次在服务器端进行检查,如果客户端在他/她的浏览器中禁用JavaScript,则无法正常工作。

您可以轻松地在没有正则表达式的情况下执行此操作。

<小时/> 参考文献: