Как найти URL, которые начинаются с «/» и содержат «php»? - PullRequest
2 голосов
/ 30 мая 2019

У меня есть XML-файл объемом 95 МБ, который идет от старой CMS (Drupal через Wordpress) к новой CMS (Squarespace).

Процесс импорта Squarespace продолжает прерываться, и, похоже, он сводится к ссылкам, которые пытаются выполнить PHP на новом сервере.

Например: <img src="/generate-image.php">

В процессе импорта новая CMS распознает это как внутреннюю ссылку и пытается выполнить этот URL-адрес для импорта содержимого, обрабатывает его как атаку или попытку внедрения кода и закрывает процесс.

Поэтому я хочу найти URL-адреса, начинающиеся с "/" и содержащие "php", чтобы я мог их удалить.

Мне должно быть ясно, что я хочу идентифицировать только внутренние ссылки, а не внешние ссылки на другие сайты.

Возможно ли это через Regex? Я действительно хотел бы избежать написания сценария, чтобы сделать это, если бы я мог просто вставить выражение Regex в Atom & Find / Replace.

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Как насчет простого регулярного выражения с использованием отрицательного класса .

"\/[^\s"'><]+\.php
  • [^\s"'><] соответствует любому символу, кроме пробел , кавычки, знак большего / меньшего
  • добавить границы слова \b после php при желании

Вот демонстрация на regex101, сравнивающая внутренние ссылки php с внешними ссылками php

0 голосов
/ 30 мая 2019

Да, это возможно с помощью регулярных выражений.Попробуйте с этим:

(\/*)[\w.]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+\b.php\b

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

...