使用表单助手进行奇怪的字符串转换

时间:2012-05-15 18:22:26

标签: html cakephp encoding cakephp-2.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循环中,每个echo都会返回: abc'abc 在html源代码中,它看起来像abc&#39;abc

然后在选择输入中:abc&#39;abc 在html源代码中:abc&amp;#39;abc

这意味着来自&的{​​{1}}个字符被转换为它的html编码 - abc&#39;abc - 但是它是如何发生的?

我也试过htmlentities()和htmlspecialchars(),但这仍然没有帮助......

1 个答案:

答案 0 :(得分:1)

  

select输入类型允许调用特殊的$ option属性   'escape'接受bool并确定是否为HTML实体   编码选择选项的内容。默认为true。

尝试将其设置为false。

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