从php文件中删除空格

时间:2014-03-24 10:11:08

标签: javascript php regex json whitespace

我有一个php文件,我输出json。

<?php
    header('Content-Type: application/json');
?>
var data = {
    "cars": [
    <?php foreach ($runshowcars as $rowscar):;?>
        {
            "id":"<?php echo $rowscar['id'] ?>",
            "name":"<?php echo $rowscar['name'] ?>"
        }
    ],
    "boats": [
    <?php foreach ($runshowboats as $rowsboat):;?>
        {
            "id":"<?php echo $rowsboat['id'] ?>",
            "name":"<?php echo $rowsboat['name'] ?>"
        }
    ],  
};

但是输出看起来像这样。

                        var data = {
        "cars": [
        {
            "id":"1",
            "name":"Ford"
        }
        ,{
            "id":"2",
            "name":"Honda"
        }
        ]
        };

我希望它看起来像这样。

var data = {"cars": [{"id":"1","name":"Ford"},{"id":"2","name":"Honda"}]};

我发现这样做的唯一方法是从我的php文件中删除空格,这显然不是一个理想的解决方案,因为它很难维护。

如何在这里删除所有空格?

我见过很多像这样的问题How to minify php page html output?但是我不能在这里工作,因为我的数据不在变量中?

3 个答案:

答案 0 :(得分:7)

为什么不将数据收集到数组中并将其编码为json。

像这样:

$data=array('cars'=>$runshowcars, 'boats'=>$runshowboats);
print json_encode($data);

(否则你返回javascript,而不是json。至少如果你在var data =部分前面加上结果。)

答案 1 :(得分:3)

只需创建一个多维关联数组并使用json_encode

答案 2 :(得分:1)

您可以删除<?php ?>之外的所有内容:

<?php
    header('...') ;
    echo 'var data = {' ;
    echo '"cars": [' ;
    foreach ($runshowcars as $rowscar)
    {
        echo '{' ;
            echo '"id":"'.$rowscar['id']?'",' ;
            echo '"name":"'.$rowscar['name'] ;
        echo '}' ;
    }
    echo '],' ;
    ...
?>

或者你可以尝试json_encode php功能(可能是更好的方式):

<?php

    $data = Array('cars'=>$runshowcars,'boats'=>$runshowboats) ;
    echo 'var data = '.json_encode($data) ;

?>