0

私は次のコードを持っています:

<?php 

     $select_options = array();
     foreach($delivery_options as $option)
     {
        $select_options[$option->getDeviceId()] = $option->getDeviceName();
        echo $select_options[$option->getDeviceId()]; 
     }

     echo $this->Form->input('default_device', array( 
        'type' => 'select', 
        'options' => $select_options, 
        'value' => $default_device,
        'label' => '', 
    ));


?>

foreachループでは、すべてのエコーがこれを返します abc'abc 。htmlソースコードでは、次のようになります。abc&#39;abc

次に、入力を選択しますabc&#39;abc 。htmlソースコードの場合:abc&amp;#39;abc

これは、&char fromabc&#39;abcがhtmlエンコーディングに変換されたことを意味します---&ampしかし、それはどのように起こったのでしょうか?

htmlentities()とhtmlspecialchars()も試しましたが、それでも役に立ちません...

4

1 に答える 1

1

select入力タイプでは、ブール値を受け入れ、HTMLエンティティがselectオプションのコンテンツをエンコードするかどうかを決定する「escape」と呼ばれる特別な$option属性を使用できます。デフォルトはtrueです。

falseに設定してみてください。

echo $this->Form->input('default_device', array( 
        'type' => 'select', 
        'options' => $select_options,
        'escape' => false, // like so
        'value' => $default_device,
        'label' => '', 
));
于 2012-05-15T18:28:31.373 に答える