Укажите ссылку iframe с помощью Regex - PullRequest
0 голосов
/ 13 ноября 2011

Проблема:

Мне нужно подтвердить, что у iframe есть один тип ссылки со следующим форматом:

http://www.example.com/embed/*****11 CHARACTERS MAX.****?rel=0

Starts with: http://www.example.com/embed/
Ends with: ?rel=0
11 CHARACTERS MAX. means in this spot, there can any 11 characters. Don't go beyond 11.

ПРИМЕЧАНИЕ: ни один из указанных тегов не должен присутствовать в каждомсообщение.Это зависит от того, как пользователь использует редактор.

Я использую PHP


Я использовал строку ниже, чтобы убедиться, что все теги исключены, кроме указанных:

$rtxt_offer = preg_replace('#<(?!/?(u|br|iframe)\b)[^>]+>#', '', $rtxt_offer);

Ответы [ 2 ]

0 голосов
/ 13 ноября 2011

Вы написали, что хотите проверять значение ссылки только с помощью регулярного выражения:

$doesMatch = preg_match('~^http://www.example.com/embed/[^?]{0,11}\?rel=0$~', $link);

Это делает именно то, что вы просите.

Для удаления тегов см. strip_tags или используйте для этого HTML-анализатор, который также поможет вам более правильно получить значение ссылки.

В аналогичном вопросе / ответе я опубликовал пример кода, как использовать strip_tags и SimpleXMLElementвместе: Извлечение всего текста и тегов img из HTML в PHP .

0 голосов
/ 13 ноября 2011

Прежде всего, в PHP есть встроенная функция, которая удаляет теги для вас: http://php.net/manual/en/function.strip-tags.php здесь нет необходимости использовать медленное регулярное выражение.

Шаги, которые вам понадобятся для решения вашей проблемы:

  1. Разобрать этот текст как DomDocument
  2. Получить из него iframe узел
  3. Получить атрибут src из iframe и проанализировать его с помощью parse_url
  4. Теперь вы можете выполнять простые проверки всех компонентов, возвращаемых parse_url

Счастливое кодирование

...