Intereting Posts
PHP Post & Redirect с cURL таким же, как HTML-форма Изменить атрибут XML PHP DOM Symfony DomCrawler: найдите элемент с определенным значением атрибута Сессии PHP через несколько доменов (не поддоменов) Android позволяет загружать несколько файлов (максимум 150 МБ) на PHP Server Идентификатор видео Vimeo YouTube из встроенного кода или URL-адреса с регулярным выражением PHP RegEx Как я могу получить флаг страны на моем сайте Как отобразить сообщение после загрузки файла? Регулярные выражения PCRE с использованием подпрограмм named pattern Недействительный месяц в oracle при использовании add_months Проблема при загрузке файлов размером более 10 МБ в IE6 Уменьшите качество изображения на лету и отобразите более качественную версию PHP-взаимодействие с кодировкой HTML Charset Извлечение значения из текстового поля в форме (представлении) в контроллер в codeigniter php при выборе selectbox Как увеличить мои «продвинутые» знания PHP дальше? (быстро)

Как избежать слэшей в регулярном выражении?

Я сделал несколько регулярных выражений для тестирования встроенного видео на YouTube:

/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/ 

Он работает для того, что я ожидаю, когда проверяю его, но проблема в том, что мне нужно передать это регулярное выражение в виде строки для некоторой функции. В частности, я использую htmlawed, где передаю следующую строку функции:

 func('iframe=-*,src(match="/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/")'); 

Проблема в том, что вышеупомянутый тип регулярных выражений работает, но он просто игнорирует косые черты и принимает что-либо вместо них.

Вот почему я подозреваю, что есть проблема с побегом.

Я был бы признателен, если бы вы могли посоветовать несколько альтернативных способов избежать этих косых черт и обратных косых черт … должно быть что-то в этом роде?

Если у вас есть строка, вам нужно будет избежать обратных косых черт (и кавычек) для строкового литерала. Или, в зависимости от того, как функция создает регулярное выражение из строки, вам может не понадобиться избегать слэшей вообще (я так не думаю здесь).

 "iframe=-*,src(match=\"/^(http:\\/\\/www\\.youtube\\.com\\/embed\\/)[^\\/\\s\\\\]+$/\")" 

В PHP вы также можете использовать другой разделитель регулярных выражений:

 ~^(http://www\.youtube\.com/embed/)[^/\s\\\\]+$~