【问题标题】:Easiest way to check if string is URL检查字符串是否为 URL 的最简单方法
【发布时间】:2012-07-13 21:22:15
【问题描述】:

目标是检查字符串是否为 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 输入数据时已经在验证这些值。如果存在,请分享一个更简单的解决方案。

【问题讨论】:

  • 1 FILTER_VALIDATE_URL 有什么问题 2 如果要求用户输入像 http:// 这样的完整路径,用户如何输入 url ......你可以检查字符串是否有 http://
  • @COLDTOLD 如果用户不输入该 URL,则该 URL 不是必需的。我正在处理表单提交的所有其他 URL 验证。对于显示图像,检查它是否是一个 URL 就足够了。

标签: php codeigniter url


【解决方案1】:

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

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

【讨论】:

  • 感谢您的建议!我正在考虑在了解如何上传 URL 图片后立即上传。
猜你喜欢
  • 2011-12-28
  • 2012-08-28
  • 1970-01-01
  • 2011-01-27
  • 2014-12-14
  • 1970-01-01
  • 2011-05-30
  • 2010-11-17
  • 1970-01-01
相关资源
最近更新 更多