0

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

/admin.somedomain.com 或 /somedomain.com

还有很多其他绝对网址,所以我不能只去掉任何前导 / 字符。任何帮助将不胜感激。

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

我确实想要“/image.jpg”“/webapp/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>
4

1 回答 1

0

天哪,很难得到一个简单的正则表达式。尝试这个:

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

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

com另请注意,您可能需要更多的顶级域名,而不仅仅是net- 根据需要添加它们。

另请注意,这不适用于其他国家的顶级域名,如co.uk

于 2012-08-31T23:16:34.293 回答