与えられた文字列がURLか何かであるかどうかを確認する必要があるだけです。次のようなものを使用できますか、それともJomllaがすでにそれを処理するためのものを持っていますか?
$url = "http://www.my_url.com";
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
// is URL
} else {
// not URL
}
ありがとうございました。
最良の解決策は、正規表現でpreg_match()を使用することです。以前に使用したものは次のとおりです。
((mailto \:|(news |(ht | f)tp(s?))| telnet | webcal | rss | nntp | file \://){1}\S +)
特定のタスクに適した他の多くのバリエーションを検索して見つけることもできます。
Joomlaには「url」フィルターが定義されていません。このURLで使用可能なフィルターを確認できます 安全なコーディングガイドライン
また、必要に応じてJInputクラスを拡張することもできますが、その価値はないと思います。
JInputまたはJFilterInputを永続的にオーバーライドするには、プラグインを作成する必要があります。次に例を示します。 Override Core Joomla!Classes
確かにfilter_var($url, FILTER_VALIDATE_URL)
は不完全ですが、正規表現の方が不完全である可能性があります(正規表現パターンの精度が向上すると、コードの膨張が大きくなり、可読性/保守性が低下します)。
PHPは新しいバージョンごとに改善され続けているので、filter_var()
の精度は向上するだけです。独自の静的正規表現パターンをロールした場合、改善の唯一の期待はあなたの肩とそれを精製するために時間と努力を捧げるあなたに依存しています。
StackOverflowの緑色のチェックマークは常に信頼できるとは限りません。また、賛成票とコメントにも注意してください。このページは確かに読む価値があります: RLのPHP検証/正規表現
(多くの開発者によって共有されている)私のアドバイスは、他の単純なphp関数にはない独自の利点を提供する場合にのみ正規表現を使用すべきであるということです。 filter_var()
が失敗するまでは、このタスクを正規表現に依存しないでください。
Joomla中心の読書については...
このページにはid
のタグがないため、ページの一番下までスクロールする必要があります。 https://docs.joomla.org/Server-side_form_validation =
https://docs.joomla.org/URL_form_field_type
Joomlaは現在、URLの_JFactory::getApplication->input->...
_バリデーターを提供していません。おそらくそれを構築するための高速なソリューションがないためです。
pS.
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
と同じです
if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
と同じです
if (filter_var($url, FILTER_VALIDATE_URL)) {
<-簡潔にするために、これを使用してください
p.p.s.あなたが本当にがURLが実際/ライブであることを確認する必要がある場合は、URLへの個別の呼び出しを設定し、「ハートビート」を確認できます、しかしそれはほとんどのプロジェクトにとって過剰である可能性がかなりあります。