如何使用preg_replace替换链接和图像链接

马库斯

我有包含链接和图像链接的文本,并且可以有很多链接并与其他单词混合。下面的文本是我的示例文本。

$string = "http://www.google.com/ is best know for search engine, this is Google logo ##https://www.google.com/images/srpr/logo11w.png##. And you can visit http://www.youtube.com/ to watch videos. Here YouTube's logo ##http://s.ytimg.com/yts/img/pixel-vfl3z5WfW.gif##";

我想用preg_replace这样的方式替换它们。

$string = '<a href="http://www.google.com/">http://www.google.com/</a> is best know for search engine, this is Google logo <img src="https://www.google.com/images/srpr/logo11w.png" />. And you can visit <a href="http://www.youtube.com/">http://www.youtube.com/</a> to watch videos. Here YouTube's logo <img src="http://s.ytimg.com/yts/img/pixel-vfl3z5WfW.gif"></img>';

这是preg_replace链接的模式。

$string = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</a>",$string);

这是preg_replace用于图片。

$string = preg_replace("/\#\#([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])\#\#/i","<img src=\"$1\"></img>",$string);

它们都可以正常工作,但是它们不能在链接和图像链接之间分开。请帮助我,谢谢我整天尝试。

马克

因为链接之间唯一可靠的区别是#井号,所以我认为您需要使用正向后隐藏在正则表达式之间添加另一层唯一性。

  1. 第一个正则表达式查找没有哈希标记的URL 以使这些锚标记

    /((?<!##)https?:\/\/[\w-?#&;~=\.\/\@]+[\w\/])/i

  2. 然后,查找带有哈希标记的任何链接,并使其成为img标签

    /\#\#(https?:\/\/[\w-?#&;~=\.\/\@]+[\w\/])\#\#/i

  3. 我还必须在每个正则表达式的开头用更具体的内容替换[\ w] + :,因为\ w似乎与#匹配,所以我将[\ w] +:替换为https ?:以匹配http:或https:

所以最后的两部分正则表达式看起来像这样

$string = preg_replace("/((?<!##)https?:\/\/[\w-?#&;~=\.\/\@]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</a>",$string);
$string = preg_replace("/\#\#(https?:\/\/[\w-?#&;~=\.\/\@]+[\w\/])\#\#/i","<img src=\"$1\"></img>",$string);

我对此进行了测试,并使用您的示例对我似乎有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 preg_replace 查找和替换链接中的单词

来自分类Dev

使用preg_replace时,链接被替换不是预期的方式

来自分类Dev

使用preg_replace更改YouTube链接

来自分类Dev

使用preg_replace更改YouTube链接

来自分类Dev

preg_replace模式和MediaWiki标记的图像标签的替换

来自分类Dev

PHP preg_replace多个链接URL

来自分类Dev

Laravel 内部链接与 preg_replace

来自分类Dev

如何用preg_replace和PHP替换特殊字符?

来自分类Dev

使用preg_replace获取和替换属性

来自分类Dev

如何使用preg_replace和regex表达式替换php文件中的代码块?

来自分类Dev

PHPExcel-如何使用preg_replace替换文本

来自分类Dev

PHPExcel-如何使用preg_replace替换文本

来自分类Dev

如何使用preg_replace替换JSON值?

来自分类Dev

如何使用 preg_replace() 仅替换特定行

来自分类Dev

preg_replace:如何获取替换的东西

来自分类Dev

使用preg_replace()获得动态替换

来自分类Dev

使用preg_replace()获得动态替换

来自分类Dev

使用函数替换 preg_replace()

来自分类Dev

如何使用 preg 替换过滤链接 url http:// 和 www

来自分类Dev

如何使用preg_replace进行空格和大写?

来自分类Dev

使用preg_replace如何包含撇号和引号

来自分类Dev

如何使用preg_replace来产生空格和大写?

来自分类Dev

使用preg_match和str_replace验证链接

来自分类Dev

使用PHP preg_replace自动链接joomla中的预定义单词的功能

来自分类Dev

使用preg_replace()将URL转换为字符串中的链接

来自分类Dev

使用PHP preg_replace自动链接joomla中的预定义单词的功能

来自分类Dev

(php) 如何使用 preg_replace 函数替换除数字和 css 单位以外的所有字符?

来自分类Dev

preg_replace与超链接有关的问题

来自分类Dev

Preg_replace在单词边界上匹配,不在链接中

Related 相关文章

  1. 1

    如何使用 preg_replace 查找和替换链接中的单词

  2. 2

    使用preg_replace时,链接被替换不是预期的方式

  3. 3

    使用preg_replace更改YouTube链接

  4. 4

    使用preg_replace更改YouTube链接

  5. 5

    preg_replace模式和MediaWiki标记的图像标签的替换

  6. 6

    PHP preg_replace多个链接URL

  7. 7

    Laravel 内部链接与 preg_replace

  8. 8

    如何用preg_replace和PHP替换特殊字符?

  9. 9

    使用preg_replace获取和替换属性

  10. 10

    如何使用preg_replace和regex表达式替换php文件中的代码块?

  11. 11

    PHPExcel-如何使用preg_replace替换文本

  12. 12

    PHPExcel-如何使用preg_replace替换文本

  13. 13

    如何使用preg_replace替换JSON值?

  14. 14

    如何使用 preg_replace() 仅替换特定行

  15. 15

    preg_replace:如何获取替换的东西

  16. 16

    使用preg_replace()获得动态替换

  17. 17

    使用preg_replace()获得动态替换

  18. 18

    使用函数替换 preg_replace()

  19. 19

    如何使用 preg 替换过滤链接 url http:// 和 www

  20. 20

    如何使用preg_replace进行空格和大写?

  21. 21

    使用preg_replace如何包含撇号和引号

  22. 22

    如何使用preg_replace来产生空格和大写?

  23. 23

    使用preg_match和str_replace验证链接

  24. 24

    使用PHP preg_replace自动链接joomla中的预定义单词的功能

  25. 25

    使用preg_replace()将URL转换为字符串中的链接

  26. 26

    使用PHP preg_replace自动链接joomla中的预定义单词的功能

  27. 27

    (php) 如何使用 preg_replace 函数替换除数字和 css 单位以外的所有字符?

  28. 28

    preg_replace与超链接有关的问题

  29. 29

    Preg_replace在单词边界上匹配,不在链接中

热门标签

归档