我要做的是允许用户输入由逗号和空格分隔的关键字(例如:单词,单词,单词,单词)。单词或任何内容的数量没有限制,我只想要尊重格式。谢谢!
答案 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,则无法正常工作。
您可以轻松地在没有正则表达式的情况下执行此操作。
<小时/> 参考文献: