WordPress中的json解码问题-值返回不一致

时间:2019-11-22 作者:Benlov

我有一个json文件,我正在wordpress网站上显示其中的内容。这个问题源于这样一个事实,即我返回的一些值需要稍后进行排序,虽然该值作为文本进行回显,但撇号将显示为撇号,但是如果我在HTML中回显完全相同的值(如作为数据属性或javascript),它将作为单个引号返回。

我需要这个值来返回相同的格式,无论它在哪里被回显。这是因为这些数据稍后将用于过滤大型数据表。

<?php $content = file_get_contents(\'jsonfilepath\');
$x = json_decode($content);

$array = array(); 
foreach($x as $row) {

             $value = $row->name;
                        if(!in_array($name, $array)){
                               array_push($array,$value);
                        }

                    };

                    sort($array);
                    foreach( $array as $name ){

                        $name = mb_convert_encoding($name,"UTF-8");
                        $name = ucwords(strtolower($name));
                        $name = html_entity_decode($name, ENT_QUOTES, "UTF-8");
                        $name = str_replace("&#8217;","\'", $name); 
                        $name = htmlspecialchars_decode(ucwords(strtolower($name)));
                        $name = implode(\'/\', array_map(\'ucfirst\', explode(\'/\', $name)));
                        echo \'<option value="\'.utf8_decode($name).\'">\'.utf8_decode($name).\'</option>\';
                    }
此返回

<option value="Chicago/O\'hare">Chicago/O&#8217;hare</option>
我几乎要在页面加载后运行脚本来替换这个撇号的所有实例,但必须有一种服务器端方法来处理这个问题。

1 个回复
最合适的回答,由SO网友:Benlov 整理而成

我发现了问题。这在内容中得到了回应,Wordpress的texturize正在转换为smartquotes。我在内容上禁用了它,这似乎解决了问题。