【问题标题】:How to distinguish between a data uri and an image url?如何区分数据 uri 和图像 url?
【发布时间】:2013-06-24 15:42:55
【问题描述】:

我有一个 php 脚本来处理通过 ajax 从 js 文件发送给它的 url。这是数据 uri 或图像 url。从 php 脚本中区分提供的字符串是数据 uri 还是图像 url 的最佳方法是什么。我正在考虑使用正则表达式来测试数据 uri。但我似乎没有提供可以处理数据 uri 的正确正则表达式。

【问题讨论】:

    标签: regex image url uri


    【解决方案1】:

    检查 URL 的扩展名。

    正则表达式: \.[^\.]*$

    【讨论】:

    • 我认为从标题中检查 mime 类型比简单检查扩展名更好。
    • @user2148105 是的,你是对的。在javascript中尝试过,看起来很干净。谢谢你。
    【解决方案2】:

    嗯...如果它以data: 开头,那么它就是一个数据URL。所以...if( substr($url,0,5) == "data:") 应该这样做。

    记住:亲吻。

    【讨论】:

    • 我认为他不是这个意思。大概http://somewhere.com/foo.html 是数据,http://www.somewhereelse.net/bar.jpg 是图像。
    • 嗯,现在当然应该这样做。我想知道为什么除了一个简单的 substr 之外,我还要考虑其他所有内容。
    • @user2148105 发生在我们最好的人身上!我无法告诉你有多少次我为某些代码不起作用而挠头,却发现我写的是$btns而不是$btn
    • @Kolink :大声笑..真的! bdw,知道如何从数据中获取文件扩展名吗?基于“/”分隔符来分解 mime 类型对我来说似乎有点奇怪。我们如何从数据 uri 中获取文件的扩展名?
    • 不 - mime 类型告诉我们数据是如何编码的,没有文件名,因此没有扩展名。不过,Explode 可能不是最佳选择。尝试另一个 substr:trim(substr($url,strlen("data:image/"),4),";,"); - 这将在 image/ 之后立即获得。额外的修剪内容是因为它可能是三个字母(例如 png)或四个字母(例如 jpeg),但后面总是跟着 ;, 所以你可以把它修剪掉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2015-05-12
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2013-07-25
    • 2016-05-28
    相关资源
    最近更新 更多