Как использовать preg_match
, чтобы увидеть, существуют ли специальные символы [^'£$%^&*()}{@:'#~?><>,;@|\-=-_+-¬`]
в строке?preg_match специальные символы
ответ
[\W]+
будет соответствовать любому символу, отличному от слова.
Спасибо за ваш ответ, но мне нужны только определенные символы, такие как^'£ $%^& *()} {@:' # ~?><>,; @ | \ = = -_ + - ¬' – stefanosn
Обычно I 'd say '[\ W]' по-прежнему идеально подходит для вас, поскольку «символ слова» относится к любой букве, номеру или подчеркиванию и исключает все остальное. Я не уверен, включает ли он дефис. Затем я заметил, что подчеркивание было в списке символов, которые вы хотите проверить. Поскольку вы хотите только найти одиночные символы, может быть проще использовать 'explode()' и 'in_array()' вместо 'preg_match()' или просто использовать цикл while(). Хотя ни один из них не очень интуитивно понятен. – stevendesu
Что делать, если строка содержит символ Unicode? Ваше регулярное выражение исключает их! – Emerald214
Использование preg_match. Эта функция принимает регулярное выражение (шаблон) и строку субъекта и возвращает 1
, если произошло совпадение, 0
, если нет совпадения, или false
, если произошла ошибка.
$input = 'foo';
$pattern = '/[\'\/~`\[email protected]#\$%\^&\*\(\)_\-\+=\{\}\[\]\|;:"\<\>,\.\?\\\]/';
if (preg_match($pattern, $input)){
// one or more matches occurred, i.e. a special character exists in $input
}
Вы также можете указать флаги и смещение для выполнить регулярное выражение функции. См. Ссылку на документацию выше.
Есть ли ссылка/ссылка для отдельных символов? – asterisk
Моя функция облегчает жизнь.
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;
}
Второй параметр ($ исключает) может передаваться со значениями, которые вы хотите игнорировать.
Использование
$string = 'testing_123';
if (has_specchar($string)) {
// special characters found
}
$string = 'testing_123';
$excludes = array('_');
if (has_specchar($string,$excludes)) { } // false
- 1. preg_match, чтобы разрешить специальные специальные символы в строке
- 2. CodeIgniter Routing специальные символы
- 3. preg_match: не удается найти подстроку, которая имеет завершающие специальные символы
- 4. preg_match и специальные символы ключевого слова не работает
- 5. как проверить специальные символы PHP
- 6. Как удалить специальные специальные символы
- 7. php regex escaping специальные символы
- 8. preg_match_all() Строки, содержащие специальные символы
- 9. PHP preg_match подтверждает символы
- 10. Как фильтровать специальные символы, но не все специальные символы?
- 11. Заменить специальные символы или специальные символы следует пространства
- 12. html2text: преобразовать специальные символы
- 13. Соответствующие специальные символы
- 14. javascript заменяет специальные символы
- 15. Ckeditor и специальные символы
- 16. Как читать специальные символы
- 17. Специальные символы и Multilanguages
- 18. elasticseach экранировать специальные символы
- 19. Специальные символы в StreamWriter
- 20. WCF ОТДЫХ Специальные символы
- 21. специальные символы laravel routing
- 22. Android: Дисплей Специальные символы
- 23. Специальные символы UTF-8
- 24. Специальные символы для python
- 25. Javascript расшифровывает специальные символы
- 26. Oracle utl_match специальные символы
- 27. Обработка датские специальные символы
- 28. Специальные символы и RODBC
- 29. Специальные HTML-символы
- 30. PHP и специальные символы
Определить "специальные символы" ... –
[^ '£ $%^& *()} {@:'? # ~><>; @ | \ - = - _ + - ¬'] – stefanosn
Почему вы хотите использовать 'preg_match()'? Если все, что вы делаете, проверяет наличие этих символов, почему бы не использовать 'strpos()'? – staticsan