2014-01-28 2 views
0

Вот мой код до сих пор:Регулярное выражение для тегов в 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-хром)
  • Нет пробелов в начале или в конце строки
+0

** Не используйте регулярные выражения для анализа 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-модулями, которые уже были написаны, протестированы и отлажены. –

+0

Кто сказал, что я разбирал HTML? Это строка, которую мне нужно проверить, чтобы она соответствовала указанным выше критериям, чтобы сделать тег действительным. В HTML не участвует. – codeninja

+0

У вас есть HTML-теги в ваших строках. Если вы пытаетесь выяснить, что такое теги и что не теги, вы анализируете HTML. Вы можете найти способы сделать это сейчас, но по дороге вы будете разочарованы. –

ответ

1

Здесь является регулярным выражением PHP, которое отвечает вашим требованиям:

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

Awesome. Большое спасибо! Я обещаю, что посмотрю учебник для регулярных выражений. У меня просто нет времени, чтобы искать его прямо сейчас, так как проект должен появиться в эту пятницу. – codeninja

Смежные вопросы