2016-11-26 5 views
0

Codeigniterでアプリケーションを構築していて、ドメインが有効かどうかを確認するためにフォーム検証ライブラリのvalid_urlを使用しようとしました(例: "hæi.no")。ノルウェーの文字は許可されていないため、これは機能しませんでした。有効なURLを確認して、 "ÆØÅ"、 "æøå"などのノルウェー語の文字を許可するのに最適な回避策は何ですか?URLがCodeigniterのノルウェー語の文字で有効かどうかを確認する方法

+0

ようになり、あなたの検証ルールに関数名を追加します。 (http://stackoverflow.com/questions/1547899/which-characters-make-a-url-invalid) –

+0

@RoshanBhumbra多くのドメインはIDNと互換性があります。ここで重要な部分は.noです。したがって、たとえば、FILTER_VALIDATE_URLなどのネイティブPHP検証を使用することはできません。 – kanarifugl

+0

私の答えは助けになりましたか? –

答えて

0

私は個人的にはコールバックを使用するよりもエレガントだと思う独自のフォーム検証ライブラリを作成できます。

お使いのコントローラで

$this->load->library(array('form_validation', 'My_form_validation')); 

これは、ライブラリの両方がロードされているMY_Form_validation

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class MY_Form_validation extends CI_Form_validation 
{ 
    /** 
    * Reference to the CodeIgniter instance 
    * 
    * @var object 
    */ 
    protected $CI; 

    function __construct($config = array()) 
    { 
     $this->CI =& get_instance(); 

     parent::__construct($config); 
    } 

    function series_exists($series_id) 
    { 
     $this->CI->db 
      ->select('COUNT(`id`)') 
      ->where('id', $series_id); 
     $rows = $this->CI->db->get('series')->result()[0]; 

     return $rows == 1; 
    } 
} 

/application/libraries/My_form_validation.php

CI_Form_validation

を拡張して、あなたがそれらの両方が必要です確実にこの例では、series_exists関数を見ることができます。これは、通常の検証ルールと同様に呼び出されます。 1つのパラメータしか必要としません。あなたはmy_valid_urlのような一意の名前を持たなければならない自分の関数に置き換えます。

私の例では、それは私が間違っているかもしれないが、私はこれらの文字がURLに有効であることを確認しないんだけど、[ここ]を見、この 'required|integer|series_exists'

関連する問題