В моем 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:]
?
Задача ещё не решена.
Других решений пока нет …