Как я могу использовать 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