用于修复URL的PHP​​ Regex

时间:2012-08-31 17:24:31

标签: php regex url

我需要使用正则表达式来搜索字符串并修复某些网址。我需要删除像这样的开头/链接:

/admin.somedomain.com或/somedomain.com

还有很多其他的绝对网址,所以我不能删除任何领先/字符。 任何帮助将不胜感激。

这是处理用户输入的文本,通常是来自TinyMCE的html,但有时来自带有和不带有其他HTML的纯文本框(或者我会以不同的方式处理它并直接处理链接而不必首先为它们搜索字符串)。不幸的是,有时为href或img src等输入的网址不正确。

我确实想要像这样的链接 “/image.jpg” “/ web应用/ GETFILE?ID = 3354”

但不是像 “/somedomain.com” “/admin.somedomain.com”

以下是我可能需要清理的文字示例

<p><a href="/webapp/GetFile?id={2C59BC2D}"><img src="/wahelper/GetImage?id=308" alt="" width="100" height="100" /></a></p> <p><a href="/admin.somedomain.com">test</a></p>

1 个答案:

答案 0 :(得分:0)

Jeez,很难获得一个简单的正则表达式。试试这个:

$str = preg_replace( "/^\/((?:admin\.)?[^.]+.(?:com|net|other_TLD_you_want))/i", "http://$1", $str);

请注意,我实际上已将/替换为http://,因为如果您希望链接正常工作,那就是您想要的。如果您只是剥离/,那么该链接将最终成为当前目录中名为admin.somedomain.com的本地文件的链接 - 这可能不是您想要的。

另请注意,您可能需要更多TLD而不仅仅是comnet - 根据需要添加它们。

另请注意,这不适用于co.uk

等其他国家/地区顶级域名