Какой тип регулярных выражений я мог бы использовать, чтобы удалить все мои URL с расширением .jpg и позволить вместо них элемент <img>? - PullRequest
0 голосов
/ 29 января 2020

Мне нужно удалить все мои изображения ссылки на мои сообщения WordPress с помощью регулярных выражений.

Я использую Плагин поиска регулярных выражений для Wordpress. Этот плагин находит контент с регулярным выражением в базе данных и может его заменить.

Некоторые примеры, которые мне нужно сделать:

<a rel="nofollow" href="https://www.exemple.com/test.jpg" class="link" title="test">
     <img src="https://www.exemple.com/test.jpg" alt="test">
</a>

до

<img src="https://www.exemple.com/test.jpg" alt="test">

И

<a href="https://www.exemple.com/test1.png" title="test1" class="link">
     <img src="https://www.exemple.com/test1.png" alt="test1">
</a>

до

<img src="https://www.exemple.com/test1.png" alt="test1">

Я нашел какое-то решение для регулярных выражений, например, здесь: https://regex101.com/r/xX9pJ8/1 или здесь { ссылка }, но я не могу адаптироваться это для моих нужд. Если у вас есть решение, пожалуйста, дайте мне знать, спасибо

1 Ответ

0 голосов
/ 30 января 2020

Как уже упоминали другие:

Мое первое замечание: регулярные выражения вполне могут быть не тем путем, который вы хотите выбрать в этом случае .

Было бы лучше настроить что-то для анализа HTML ваших сообщений, найти якорные теги, которые содержат теги изображений, а затем проверить атрибут источника тега изображения, чтобы увидеть, заканчивается ли расширение "jpg", и если поэтому замените тег привязки тегом image.


Кроме того, использование WordPress сделает некоторую сумму сложнее, и это можно сделать . Обратите внимание, что, как вы можете прочитать в ссылке, это не то, для чего предназначен RegEx, и он не сможет обрабатывать каждую отдельную ситуацию и ссылку.

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

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

/<a[^>]+href ?= ?["'][^"']+\.(?:jpe?g|png)["'].+\n?\r?[\s]{0,100}<img[^>]+src ?= ?["']([^"']+\.(?:jpe?g|png))["'].+\n?\r?[\s]{0,100}<\/a>/gim

Это работает в PCRE или JS, в форматах PNG, PNG, JPG, JPG, JPEG и JPEG. Он не будет работать, если между тегом привязки и тегом изображения есть несколько разрывов строк, или с другими расширениями изображений, если вы не добавите их.

И вы просто замените весь этот поиск на: <img src="$1">

...