php - PHP正则表达式用于不同的URL

标签 php regex image youtube url

我试图找出一种匹配3种不同URL类型的方法;它们是:

  • http://(www.)domain.com www.domain.com
  • http://(www.)domain.com/image.jpg/.png/gif www.domain.com/image.jpg/.png/.gif
  • http://(www.)youtube.com/watch?v=Li1zXaEYol8 www.youtube.com/watch?v=Li1zXaEYol8

  • 请注意,如果它们只是不带http或www的domain.com,则我不希望对其进行解析。

    我面临的问题是让这三个-甚至两个一起工作,
    我有一个可以自动链接的类,因此如果http://或www包含某些内容。它将链接它,但是如果我放入图像,它将解析图像中URL的HTML,例如:
    <img src="<a href="www.domain.com">domain.com</a>" />
    

    这是垃圾:(

    我还想扫描YouTube URL,然后用嵌入代码替换该URL,以便显示视频而不是URL。我可以从URL中提取ID,但无法进行替换。

    请注意,这是在文本区域(例如评论字段)上进行的,人们在其中输入评论,因此,为什么自动链接URL,解析图像和YouTube视频的HTML会很好。

    通过SQL查询并回显$ comments ['message']来显示数据,并提供一些str_replace东西来进行一些简单的格式化。

    任何帮助,将不胜感激。

    最佳答案

    干得好:

    (?:http:\/\/www\.|http:\/\/|www\.)(?:youtube\.com\/watch\?v=(?:\w+)|domain\.com\/image.(?:jpg|png|gif)|domain\.com)
    

    或使用定界符:
    ~(?:http:\/\/www\.|http:\/\/|www\.)(?:youtube\.com\/watch\?v=(?:\w+)|domain\.com\/image.(?:jpg|png|gif)|domain\.com)~i
    

    您可以test the above RegExs @ Robular

    要确定URL是否在不需要的HTML标记内,建议您使用DOM解析器。

    另外,请查看以下相关问题: How to mimic StackOverflow Auto-Link Behavior

    关于YouTube替代品,您可以执行以下操作:
    echo preg_replace('~youtube\.com\/watch\?v=(\w+)~i', 'embed code $1', $comments['message']);
    

    关于php - PHP正则表达式用于不同的URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2040284/

    相关文章:

    css - 使用元素内保存的图像名称 - XML/CSS

    Java在不创建文件的情况下将图像转换为输入流

    c++ - 在 C/C++ 中将 64 位 bmp 文件转换为数组

    java - 如何检查字符串是否为正则表达式

    php - 未选择数据库?

    php - 添加新产品时向 magento 下拉列表或多选产品属性添加值

    php - 在 CentOs 上安装 squirrelmail

    php - 正确匹配 IDN URL

    python - 基于上下文(?)正则表达式搜索

    php - 找不到类 'Illuminate\support\Facades\Redirect' laravel 5.6