2

目標は、文字列がURLであるかどうかを確認することであり、正規表現は必要ありません。

ユーザーが画像をアップロードしたり、URLから画像を追加したりできるフォームがあります。

私は得る:

van_gogh_shoes.jpg

また

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

ユーザーは、アップロードまたはURLのいずれかで1つの画像のみを追加できます。したがって、mysqlでは、entry_image上記の値の1つで名前が付けられた同じ列を更新しています。

画像を表示するとき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 に答える