В чем разница между \ s и [: space:] в PHP Regex?

В моем PHP-коде я использовал [:space:] а также [:print:] для сопоставления пробелов и непробельных символов соответственно. Однако я наткнулся на один случай, когда preg_match не смог найти совпадение, хотя он должен был. Замена [:space:] с \s решил проблему. Из-за этого я понял все мои другие использования [:space:] в коде может неожиданно потерпеть неудачу в какой-то момент в будущем и поэтому приступил к замене всех их \s,

Мой вопрос почему сделал [:space:] потерпеть неудачу где \s работал? Первоначальное регулярное выражение было:

'%\[/row\][[:space:]]+<!-- related_products_section -->[[:space:][:print:]]+<!-- end_related_products_section -->%m'

который я изменил в:

'%\[/row\][\s]+<!-- related_products_section -->[\s[:print:]]+<!-- end_related_products_section -->%m'

Другой вопрос, который возникает, это то, что не является posix эквивалентом [:print:]?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]