Resident234
@Resident234
Back-End . PHP . Bitrix

Как найти ссылку на pdf через регулярное выражение?

Добрый день.
$content = preg_replace('/<a href=(\S*)>(.*?)"<\/a>/', '<a href=$1 class="pdf" target="_blank">$2</a>', $content);

Вот этот код отрабатывает нормально.
Но дело в том, что навесить класс pdf и атрибут target нужно только ссылкам на документ .pdf.

Пытаюсь сделать так
$content = preg_replace('/<a href=(\S*)>(.*?).pdf"<\/a>/', '<a href=$1 class="pdf" target="_blank">$2</a>', $content);

Но ничего не выходит.

UPD:

Сделал пока так :
$content = preg_replace('/<a href=(\S*)>(.*?)<\/a>/', '<a href=$1 target="_blank">$2</a>', $content);
$pattern = "~(http|https|ftp|ftps)://(.*?)(\s|\n|[,.?!](\s|\n)|$)~";
$content = preg_replace($pattern, 'http://docs.google.com/viewer?url=$1://$2', $content);


Открываем абсолютно все ссылки в онлайн просмотрщике (на странице будут только ссылки на документы), но мне желательно, что бы применялось только для ссылок на файлы .doc , .docx . Буду благодарен, если кто подскажет, как модифицировать этот код. Заранее спасибо.
  • Вопрос задан
  • 487 просмотров
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Перестаньте парсить регулярками.

DOM парсер решит все проблемы.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
/["']((.*\/\/|)([\/a-z0-9_%-]+\.(pdf))(.*?))["']/gi

Находит URL строки в HTML:
$1 => путь (с параметрами, если есть)
$2 => протокол, если путь АБСОЛЮТНЫЙ
$3 => путь без протокола, если путь АБСОЛЮТНЫЙ
$4 => расширение
$5 => GET-параметры, если присутствуют (?foo=bar&foo2=bar2....)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽