【问题标题】:When using preg_replace on a variable in an array, the variable doesn't reflect preg_replace changes在数组中的变量上使用 preg_replace 时,该变量不反映 preg_replace 更改
【发布时间】:2015-10-23 00:04:40
【问题描述】:

我无法弄清楚我的代码到底出了什么问题。

问题: 我从 mysql 数据库中获取结果,返回的变量之一需要通过 preg_replace 运行,preg_replace() 在我回显时工作得很好,但是当我尝试将该变量放入数组时,它没有t 反映 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 Regeneration 3 Bow Skills used at every beat mind可能有资格获得最多3个(但不适用于射程类型)

简单地回显如下: MP Regeneration 3 Bow Skills used at every beat mind可能有资格获得最多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;

再次编辑: 查看答案以获取解决方案!

【问题讨论】:

  • 这段代码对我来说似乎不太正常。 if 和 else 都做同样的事情。您是否修剪了部分代码?您是否可能删除了导致错误的部分?
  • 抱歉,数组中还有很多变量,为了清楚起见,我刚刚删除了它们。我编辑了我的问题以反映没有 if 语句的代码,错误仍然发生。
  • 不用extract()试试看。
  • 另外,为什么不直接strip_tags()
  • Re“如果我错了请纠正我”:你试过了吗?您是否阅读过文档中的示例?

标签: php


【解决方案1】:

感谢 cmets 中的好人,解决问题的方法很简单,就是使用 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

【讨论】:

  • 我可以在两天内接受我自己的答案,将设置警报。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多