错误:在PHP脚本中“只能通过引用传递变量”

时间:2012-04-01 08:03:51

标签: php

我在以下代码行中遇到错误“致命错误:只能通过引用传递”。

$ag = array(M($forge[2][$i], NULL, TRUE), M($about[0]["text"], "Less", TRUE), M($address[0]["text"], NULL, TRUE), M($phone[0]["text"], NULL, TRUE), M($website[0]["text"], "...", TRUE));

if(CAT)
    array_push($ag, M($cat[1], NULL, TRUE));

$pf_args =  str_replace("%s, ", "", PLACEHOLDER, 4 - count($_POST['ad']));

file_put_contents("files/" . FILENAME . ".sql", vsprintf($pf_args, $ag), FILE_APPEND); 

该消息在最后一行显示错误。任何人都可以告诉我原因吗?

(编辑):M()定义为:

function M($text, $str = NULL, $escape = FALSE) {
    if (!empty($str))
        $text = str_replace($str, "", $text);
    $text = str_replace("(Edit)", "", $text);
    $text = str_replace("More", "", $text);
    $text = str_replace("Less", "", $text);
    $text = str_replace("<br>", "\n", $text);
    if ($escape)
        return mysql_escape_string(trimText(html_entity_decode(strip_tags($text))));
    else
        return trimText(html_entity_decode(strip_tags($text)));
}

1 个答案:

答案 0 :(得分:6)

问题在于这一行:

$pf_args =  str_replace("%s, ", "", PLACEHOLDER, 4 - count($_POST['ad']));

最后一个参数仅用于输出替换次数。您必须在此处传递变量,而不是表达式4 - count($_POST['ad'])。只需删除最后一个参数即可。

  

混合str_replace(混合$ search,混合$ replace,混合$ subject [,int&amp; $ count])

http://php.net/manual/en/function.str-replace.php

如果您想限制替换次数,str_replace_once手册页的评论中会有str_replace的实施。