специальные символы preg_match

Как я могу использовать preg_match чтобы увидеть, существуют ли специальные символы [^'£$%^&*()}{@:'#~?><>,;@|\-=-_+-¬`] в строке ?

Solutions Collecting From Web of "специальные символы preg_match"

[\W]+ будет соответствовать любому символу, отличному от слова.

Используйте preg_match . Эта функция принимает регулярное выражение (шаблон) и строку субъекта и возвращает 1 если совпадение произошло, 0 если нет совпадения, или false если произошла ошибка.

 $input = 'foo'; $pattern = '/[\'\/~`\!@#\$%\^&\*\(\)_\-\+=\{\}\[\]\|;:"\<\>,\.\?\\\]/'; if (preg_match($pattern, $input)){ // one or more matches occurred, ie a special character exists in $input } 

Вы также можете указать флаги и смещение для функции « Выполнить регулярное выражение» . См. Ссылку на документацию выше.

Моя функция облегчает жизнь.

 function has_specchar($x,$excludes=array()){ if (is_array($excludes)&&!empty($excludes)) { foreach ($excludes as $exclude) { $x=str_replace($exclude,'',$x); } } if (preg_match('/[^a-z0-9 ]+/i',$x)) { return true; } return false; } 

Второй параметр ($ excludes) может быть передан со значениями, которые вы хотите игнорировать.

Применение

 $string = 'testing_123'; if (has_specchar($string)) { // special characters found } $string = 'testing_123'; $excludes = array('_'); if (has_specchar($string,$excludes)) { } // false