在数组中的变量上使用preg_replace时,该变量不会反映preg_replace更改

时间:2015-10-22 15:33:35

标签: php

我无法弄清楚我的代码在世界上出了什么问题。

问题: 我从mysql DB获得结果,其中一个返回的变量需要通过preg_replace运行,preg_replace()在我回显它时工作正常,但是当我尝试将该变量放入数组时,它并不反映preg_replace()更改。

$bl = array(
    'skills' => array()
);

if ($result = $db->query($queryStmt)) {
    while ($row = mysqli_fetch_assoc($result)) {
        extract($row);
        $newdesc = preg_replace("/\<[^>]+\)/","",$Desc);
        $sk = array(
            'desc' => $newdesc
        );
        array_push($bl['skills'], $sk);
    }
};

header('Content-type: application/json');
echo json_encode($bl, JSON_NUMERIC_CHECK);
$db = NULL;

同样,如果我在数组代码之前回显$ newdesc变量,它会正确显示,但是当脚本结束时回显出数组时,它就不会显示。

编辑: 有人请求echo响应,如果我回显$ newdesc这个字符串: MP再生3每次打击心态使用的弓技能可能有资格获得每次额外3次(但不适用于范围类型)

简单地回声如下: MP再生3每次打击心态使用的弓技能可能有资格获得每次额外3次(但不适用于范围类型)

现在代码反映了这一点:

$bl = array(
    'skills' => array()
);

if ($result = $db->query($queryStmt)) {
    while ($row = mysqli_fetch_assoc($result)) {
        extract($row);
        $newdesc = preg_replace("/\<[^>]+\)/","",$Desc);
        echo $newdesc;
        $sk = array(
            'desc' => $newdesc
        );
        array_push($bl['skills'], $sk);
    }
};

header('Content-type: application/json');
echo json_encode($bl, JSON_NUMERIC_CHECK);
$db = NULL;

再次编辑: 请参阅答案以获得解决方案!

1 个答案:

答案 0 :(得分:1)

感谢评论中的精彩人物,问题的解决方案只是使用strip_tags()我的朋友就是我这个白痴的好例子。代码现在是这样的:

$bl = array(
    'skills' => array()
);

if ($result = $db->query($queryStmt)) {
    while ($row = mysqli_fetch_assoc($result)) {
        $newdesc = strip_tags($row['Desc']);
        $sk = array(
            'desc' => $newdesc
        );
        array_push($bl['skills'], $sk);
    }
};

header('Content-type: application/json');
echo json_encode($bl, JSON_NUMERIC_CHECK);
$db = NULL;

它完美无缺。 我正在创建一个已经存在的函数,请阅读strip_tags()上的文档以获取更多信息。 http://php.net/manual/es/function.strip-tags.php