为什么“str_replace”在函数内部使用时不起作用?

时间:2014-01-09 15:51:33

标签: php

我需要跳过一些输入数据中的单引号,我想在一个函数中执行它(该函数应该还包括其他指令,但为了清楚起见,我不是在这里写它们)。 所以我编写了以下函数并测试了函数内部和外部的输出:

function quote_skip($data)
    {
        $data = str_replace("'", "\'", $data);
        echo "Output inside the function quote_skip: ".$data." <br>";
        return $data;
    }
    $test = "l'uomo";
    quote_skip($test);
    echo "Output outside the function quote_skip: ".$test."<br>";

结果如下:

在函数quote_strip:l \'uomo

中输出

在函数quote_strip:l'uomo

之外输出

所以当我在函数外部回显变量时,反斜杠就不再存在了。为什么会这样?有没有办法在函数外部保留反斜杠?

我只知道php的基础知识,也许答案非常明显,但我找不到我搜索过的所有论坛中的任何内容。如果有人有解决方案,将不胜感激。

谢谢。

3 个答案:

答案 0 :(得分:5)

您在

中忽略了函数的返回值
quote_skip($test);

want this

$test = quote_skip($test);

答案 1 :(得分:2)

功能不是问题,你的代码波纹管功能是,你不回显功能输出:

$test = "l'uomo";
echo "Output outside the function quote_skip: ".quote_skip($test)."<br>";

答案 2 :(得分:0)

如果您通过引用传递变量,它将起作用:

function quote_skip(&$data) // use the `&`
{
    $data = str_replace("'", "\'", $data);
    echo "Output inside the function quote_skip: ".$data." <br>";
}

演示:http://phpfiddle.org/lite/code/emr-5ap