2

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

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

我得到:

van_gogh_shoes.jpg

或者

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

用户只能添加 1 张图片,上传或 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似乎可行的方法,但与大多数我没有使用过的东西一样,我不确定它是否是最好的解决方案。你有什么想法?

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

4

1 回答 1

3

filter_var()是最好的解决方案。为不想要正则表达式作为解决方案而竖起大拇指。

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

于 2012-07-14T02:04:14.703 回答