我在以下代码行中遇到错误“致命错误:只能通过引用传递”。
$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)));
}
答案 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
的实施。