使用复合词在PHP中使用标记的正则表达式

时间:2014-01-28 22:17:09

标签: php regex html-parsing

到目前为止,这是我的代码:

if (preg_match('/\s/',$tagName)){
    $_ErrorMessage = "<div class='alert alert-danger' id='errorBox'>";
    $_ErrorMessage.= "<b>Error!</b> La etiqueta no puede contener espacios. Asegúrese de escribirla correctamente.";
    $_ErrorMessage.= "</div>";
} elseif(preg_match('/[^A-Z]/i', $tagName)){
    $_ErrorMessage = "<div class='alert alert-danger' id='errorBox'>";
    $_ErrorMessage.= "<b>Error!</b> La etiqueta no puede contener carácteres especiales. Cáracteres especiales son todos aquellos que no estan dentro del alfabeto. Por favor escríbala de nuevo.";
    $_ErrorMessage.= "</div>";
} else {
    $insertNewTagQuery = sprintf("INSERT IGNORE INTO solution_tags (SOLUTION_TAGS_NAME)VALUES(LOWER('%s'))", $tagName);
    if($DBConnect->query($insertNewTagQuery)){
        header("Location:http://127.0.0.1/helpdesk/admin/thankyou.php");
    }
}

使用上面的代码,我正在检查标签所在的字符串是否有空格,以及是否有除字母表之外的任何特殊字符。

给出了第二个想法,并且在课堂上的工程师说标签可以是复合词并且具有特殊字符和数字,例如Internet Explorer或'google-chrome'或HTML5我决定修改这个小小的脚本。

问题是我没有任何关于构建正则表达式的经验。

如何使用以下标准进行正则表达式?

  • 复合词
  • 在两个单词中间划线特殊字符(internet-explorer,google-chrome)
  • 字符串开头或结尾没有空格

1 个答案:

答案 0 :(得分:1)

这是一个符合您要求的PHP正则表达式:

/^\b[-a-z \d]*\b$/i