Вот мой код до сих пор:Регулярное выражение для тегов в PHP с использованием составных слов
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
Я решил изменить этот крошечный скрипт.
Проблема в том, что у меня нет опыта в создании регулярных выражений.
Как я могу сделать регулярное выражение со следующими критериями?
- Составные слова
- тире специальный символ в середине двух слов (интернет-Explorer, Google-хром)
- Нет пробелов в начале или в конце строки
** Не используйте регулярные выражения для анализа HTML. Используйте подходящий модуль синтаксического анализа HTML. ** Вы не можете надежно проанализировать HTML с регулярными выражениями, и вы столкнетесь с печалью и разочарованием в будущем. Как только HTML изменится с ваших ожиданий, ваш код будет сломан. См. Http://htmlparsing.com/php или [этот поток SO] (http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php) для примеры правильного анализа HTML с PHP-модулями, которые уже были написаны, протестированы и отлажены. –
Кто сказал, что я разбирал HTML? Это строка, которую мне нужно проверить, чтобы она соответствовала указанным выше критериям, чтобы сделать тег действительным. В HTML не участвует. – codeninja
У вас есть HTML-теги в ваших строках. Если вы пытаетесь выяснить, что такое теги и что не теги, вы анализируете HTML. Вы можете найти способы сделать это сейчас, но по дороге вы будете разочарованы. –