与正则表达式链接的PHP URL
|
我知道我已经在很多地方看到了这一点,但是我需要的东西与常规有所不同。可悲的是,当我在任何地方搜索它时,它都会被埋在帖子中,只是将链接变成html标签链接。我希望PHP函数从链接中删除\“ http:// \”和\“ https:// \”以及。*之后的所有内容,因此,基本上我想要的是将A变成B 。
A: http://www.youtube.com/watch?v=spsnQWtsUFM
B: <a href=\"http://www.youtube.com/watch?v=spsnQWtsUFM\">www.youtube.com</a>
如果有帮助,这是我当前的PHP regex替换功能。
ereg_replace(\"[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]\", \"<a href=\\\"\\\\0\\\" class=\\\"bwl\\\" target=\\\"_new\\\">\\\\0</a>\", htmlspecialchars($body, ENT_QUOTES)));
说我对正则表达式完全不了解也可能会有所帮助。谢谢!
编辑:当我输入像这样的注释blahblah https://www.facebook.com/?sk=ff&ap=1 blah
时,我得到的HTML像这样的<a class=\"bwl\" href=\"blahblah https://www.facebook.com/?sk=ff&ap=1 blah\">www.facebook.com</a>
根本不起作用,因为它将链接周围的文本带走了。但是,如果有人仅评论链接,则效果很好。这是我将功能更改为此
preg_replace(\"#^(.*)//(.*)/(.*)$#\",\'<a class=\"bwl\" href=\"\\0\">\\2</a>\', htmlspecialchars($body, ENT_QUOTES));
没有找到相关结果
已邀请:
7 个回复
你换
编辑:我认为$ str首先已经被检查为URL,所以我省略了它。另外,我假设所有URL都将包含\'http:// \'或\'https:// \'。如果将网址格式设置为
甚至
,则上述正则表达式将无法正常工作! EDIT2:对不起,我没有意识到您正在尝试在整个测试中替换所有字符串。在这种情况下,这应该可以按照您想要的方式工作:
犯痪桂涛杭
当我试图在程序员的记事本中用作查找和替换时,这就是对我有用的方法。 ^(。)//应该提取协议-在第二行中称为\\ 1。 (。)/应该提取所有内容,直到第一行-在第二行中称为\\ 2。 (。*)$捕获所有内容,直到字符串结尾。 -在第二行中称为\\ 3。 以后添加
这应该更好一些,但只会替换1个URL
耐钨徒
我还无法测试,所以请告诉我它是否有效。
刷遍派戳
曝匿弄罚
我想您知道该怎么做。
联课
姬第柔炒