Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Регулярка. PHP (https://javascript.ru/forum/server/85873-regulyarka-php.html)

firep91613 27.04.2024 13:33

Регулярка. PHP
 


Я что-то не понял. Обратный слэш - это '\'? То, что их надо удваивать в самом регулярном выражении я знаю. Но зачем в этом примере сделали '/path\\/to\\/file/i'? Должно же быть '/path\/to\/file/i'. Разве нет?

Nexus 27.04.2024 17:01

Цитата:

Сообщение от firep91613
Обратный слэш - это '\'?

Да
Цитата:

Сообщение от firep91613
зачем в этом примере сделали '/path\\/to\\/file/i'?

Цитата:

Сообщение от firep91613
Должно же быть '/path\/to\/file/i'. Разве нет?

Кто знает.

firep91613 28.04.2024 09:22

Nexus,
скажите, тут ведь опечатка?

Nexus 28.04.2024 17:51

firep91613, в php вообще нет модификатора шаблона M. Что значит "Модификатор M обозначает несколько необязательных модификаторов" - вообще загадка.
Выражение с одним бекслешем и двумя бекслешами работают одинаково, что меня удивило.
Я в качестве разделителей предпочитаю символ решетки, еще ни разу не пришлось его экранировать.

Модификаторы шаблонов
Разделители

Aetae 28.04.2024 23:07

ну судя по всему(в доки не лез чисто по ситуации) экранирование в PHP работает не так как в js:
В js так:
\<спецсимвол> = <интерпретация символа>
\<обычный символ> = <обычный символ>
В php так:
\<спецсимвол> = <интерпретация символа>
\<обычный символ> = \<обычный символ>

Потому и работает так: / не является спецсимволом, а \ является, потому \\/ и \/ в итоге являются одной и той же строкой после интерпретации: '/path\/to\/file/i' === '/path\\/to\\/file/i' // PHP: true, JS: false

А "M" тут используемся в качестве заменителя для подстановки, как "N" или "X":)

firep91613 29.04.2024 12:28

Aetae,
спасибо!

firep91613 01.05.2024 17:19

Надо было просто читать дальше :)



Часовой пояс GMT +3, время: 06:03.