Я хочу написать регулярное выражение в php для соответствия только любым английским символам, пробелам, номерам и всем специальным символам.
Из этого вопроса Regex любой символ ascii
Я попробовал это
preg_match("/[\x00-\x7F]+/", $str);
но он выдает предупреждение
No ending delimiter '/' found
поэтому, как написать это регулярное выражение в php.
альтернативой было бы что-то вроде [az \ d \ s], а также по одному рассмотреть все специальные символы, но разве нет способа сделать проще?
благодаря
Есть ряд сложных решений, но я бы предложил это красиво простое регулярное выражение:
^[ -~]+$
Он позволяет печатать все символы в таблице ASCII .
В PHP:
$regex = '%^[ -~]+$%'; if (preg_match($regex, $yourstring, $m)) { $thematch = $m[0]; } else { // no match... }
объяснение
^
утверждает, что мы находимся в начале строки [ -~]
соответствует всем символам между пробелом и тильдой (все печатные символы в таблице ASCII) +
означает «соответствует одному или нескольким из них» $
Anchor утверждает, что мы находимся в конце строки Регулярное выражение PHP содержит набор классов символов, которые вы можете ссылаться, причем ascii является одним из них
$test = "hello world 123 %#* 单 456"; preg_match_all("/[[:ascii:]]+/",$test,$matches); print_r($matches);