如何找到以“ /”开头并包含“ php”的URL?

时间:2019-05-29 21:21:36

标签: regex xml atom-editor regex-negation regex-lookarounds

我有一个95MB的XML文件,内容从旧的CMS(通过Wordpress通过Drupal)到新的CMS(Squarespace)。

Squarespace导入过程不断中断,并且似乎归结为试图在新服务器中执行PHP的链接。

例如: <img src="/generate-image.php">

在导入过程中,新CMS将其识别为内部链接,并尝试执行该URL来导入内容,将其视为攻击或尝试进行代码注入并关闭该过程。

因此,我想找到一种以“ /”开头并包含“ php”的URL,以便将其删除。

我应该清楚,我只想标识内部链接,而不是指向其他站点的外部链接。

通过Regex可以做到吗?如果我可以将Regex语句插入Atom&Find / Replace,我真的很想避免编写脚本来做到这一点。

2 个答案:

答案 0 :(得分:2)

使用negated class处理一些简单的正则表达式。

"\/[^\s"'><]+\.php
  • [^\s"'><]匹配除空白,引号,大/小符号
  • 之外的任何字符
  • 根据需要在php之后添加word boundary \b

Here is the demo at regex101 comparing internal php links to external php links

答案 1 :(得分:0)

是的,使用正则表达式是可能的。试试这个:

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

它将与有效URL的所有可能字符匹配。