2017-09-02 86 views
1

HTML如何验证“提供至少2个标签,用逗号分隔”从标签文本字段在PHP中?

<h3>Tags</h3> 
<input <?php echo $err_st3; ?> type="text" name="tags" id="textfield" 
placeholder="Example: tag, another tag, hello tagging" value=" 
<?php echo @$tagsOK; ?>"> 

$tags=array(); 
$tagline = $_POST['tags']; 
//TAGS 
if(!empty($tagline)){ 
    $tokens = str_replace(' ', '', $tagline); 
    $tags = explode(',',$tokens); 
    $tags = array_unique($tags); 
    foreach ($tags as $tag) { 
     if(preg_match("/^[0-9a-zA-Z]$/",$tag) === 0) { 
      // error  
     } 
     else{ 
      echo $count_tags = $count_tags+1; 
     } 
    } 
    if($count_tags <= 1){ 
     $error[]=" - Please provide at least 2 tags, separated by commas."; 
     $err_st3 = $st; 
    } 
    $tagsOK = implode(', ',$tags); 
} 
else{ 
    $error[]=" - Please provide at least 2 tags, separated by commas."; 
    $err_st3 = $st; 
} 

当我输入类似 “A,B” 字母,那么这将是有效的。

但它不验证的话,如“车辆,人物,场景”

+2

您在'的preg_match匹配您的正则表达式一个字符() '。避免在不需要时使用正则表达式,或者,如果您的代码正常工作,请使用其他术语;为什么我只能输入带有-Z和0-9个字符的标签?这是相当严格的。 –

+0

但没有'preg_match()'它会添加空格作为第二个标签,像这样''Animal,[space]“' –

回答

0

而不是做的preg_match检查长度:

strlen($tag)==1 
+0

Works ...但是当我只输入1个标签..它会添加空间作为第二个标签, “动物,[空间]”' –

+0

如果标签是单词或空格,它不会满足它去条件的条件 –

相关问题