检查字符串是否为URL的最简单方法


Easiest way to check if string is URL

目标是检查字符串是否是URL,不需要正则表达式。

我有一个表单,允许用户上传图像或从URL添加图像。

我得到:

van_gogh_shoes.jpg

http://t2.gstatic.com/images?q=tbn:ANd9GcR2YNtlcmDDBpseEqUkMhe7-netq7RL2u_bw3_34VwB-Tsv2V-B

用户只能添加一张图片,可以是上传的,也可以是URL。因此,在mysql中,我将使用上面的一个值更新名为entry_image的同一列。

当显示图像时,我需要以最简单的方式检查entry_image列中的值是否为URL。如果是,请显示完整的URL,否则我自己的上传图像路径。

<img src="<?php (filter_var($row->entry_image, FILTER_VALIDATE_URL)) ? $row->entry_image : "uploads/entries/{$row->user_id}/{$row->entry_image} ?>">

我使用的是FILTER_VALIDATE_URL,它似乎有效,但和我以前没有使用的大多数东西一样,我不确定它是否是最好的解决方案。。你有什么想法?

在显示图像时,我试图避免使用regex或其他繁重的验证代码,因为在向mysql输入数据时,我已经在验证值了。如果存在,请共享一个更简单的解决方案。

filter_var()是最好的解决方案。感谢您不希望使用regex作为解决方案。

除此之外,我只想指出,将图像文件从外部URL传输到服务器是一种更好的方式(在我看来)。它将使您免受诸如删除的外部图像和外部服务器连接问题等问题的影响。您也不必担心验证URL。不过这只是一个建议。