Помогите с Regex используя preg_match - PullRequest
0 голосов
/ 20 августа 2010

Недавно я перешел на PHP 5.3+ и после этой миграции я узнал, что функция eregi () устарела, это функция, которую я в основном использовал для своих потребностей в регулярных выражениях.

Но теперь мне пришлось переключиться на функцию preg_match (), у меня возникли проблемы при проверке определенного условия.

Hello World

Я хочу, чтобы preg_match проверил приведенную выше строку "hello world", в ней есть пробелы.

Но я хочу, чтобы он проверялся, даже если нет пробела "helloWorld" или просто "hello".

Что я пытаюсь сделать, так это то, что в моем скрипте у меня есть текстовое поле для заголовка категории, я хочу, чтобы оно принимало в нем пробелы и никаких других специальных символов (таких как ._- + *,).

Я заставил его работать, но я не уверен, что это правильный путь, которым я пользуюсь.

preg_match('/^[a-zA-Z0-9\s]*$/', $cat_name);'

Любая помощь будет оценена.

Ответы [ 4 ]

4 голосов
/ 20 августа 2010

Выглядит хорошо, но примет пустую строку, поэтому вы можете изменить * на +. Помните, что это регулярное выражение, вероятно, не будет принимать символы UTF-8, указанные в языке.

См. Этот комментарий в руководстве: http://www.php.net/manual/en/function.preg-match.php#95828

Также обратите внимание, что некоторые специфические символы очень часто используются в заголовках, например, "и, возможно, было бы лучше разрешить это.

1 голос
/ 20 августа 2010

Должно работать, но вы можете заменить \ s обычным пробелом "", чтобы он совпадал только с пробелами, а не с другими символами пробелов (такими как табуляции).Также замените * на +, чтобы он не занимал пустые строки.

preg_match('/^[a-z0-9 ]+$/i', $cat_name);'
1 голос
/ 20 августа 2010

Да, это правильный путь.Вы также можете использовать модификатор нечувствительного регистра вместо a-zA-Z:

preg_match('/^[a-z0-9\s]*$/i', $cat_name);'

Одна вещь, которую вы можете рассмотреть, заключается в том, что ваше регулярное выражение в настоящее время принимает пустую строку.Если вы хотите убедиться, что есть хотя бы один символ, используйте + вместо *.

0 голосов
/ 20 августа 2010

Обратите внимание, что \ s также позволяет использовать другие пробелы, такие как табулятор или символ новой строки.

...