Intereting Posts
что является лучшим способом создания случайного идентификатора mysql с помощью PHP как сделать загрузку файла с помощью сериализации jquery Описательное поведение отдельных элементов отделено от ссылочного статуса контейнера массива? Regex получает строку после ключевого слова Как включить запросы PUT в Azure? Как отладить в PHPStorm со встроенным веб-сервером с помощью инструмента командной строки Symfony mysqli / mysql запрос внутри функции не работает Обнаружение щелчка внутри IFrame с использованием невидимого div PHP-рекурсивный массив из списка Что может вызвать ошибку ERR_CONNECTION_RESET, на xampp во время сеанса php session заканчивается случайным образом через несколько минут вызывающая функция внутри preg_replace, внутри функции Как правильно обрабатывать пробелы в PHP Shell_exec? Почему все типы данных возвращаются как строки с sqlite3 fetchAll (PDO: FETCH_ASSOC) с PHP? Реализация длинного опроса с помощью jQuery и PHP

фальшивый разделитель регулярных выражений в wordpress

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

Я нашел этот код в wordpress

$self = preg_replace('|^.*/wp-admin/|i', '', $self); 

согласно документу на php.net | недопустимо как разделитель.

Может кто-нибудь объяснить код?

Ты это пробовал?

По вашей ссылке :

При использовании функций PCRE требуется, чтобы шаблон был заключен в разделители. Разделителем может быть любой символ, не являющийся буквенно-цифровым, без обратного слэш-символа.

Итак | является вполне допустимым разделителем. Когда вы читаете комментарии на этой странице, они предлагают не использовать метасимволы (например, | ) в качестве разделителей, когда они должны использоваться внутри регулярного выражения.

Поскольку в вашем примере нет чередования $self = preg_replace('|^.*/wp-admin/|i', '', $self); нет проблем, и он работает как ожидалось.

Когда у вас есть чередование в регулярном выражении (например, preg_match("|(F|f)oo|", "Foobar") ), вы получите предупреждение «Неизвестный модификатор« f », потому что интерпретатор считает, что регулярное выражение заканчивается на первое чередование.

Вывод: разрешено, но не рекомендуется использовать метасимволы регулярных выражений, такие как | , ^ , + , … как разделители регулярных выражений.