I am having the error "Fatal error: Only variables can be passed by reference" in the following lines of code.
$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);
The message shows error in the last line. Can any one suggest me the reason?
(Edit): M() is defined as:
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>", "
", $text);
if ($escape)
return mysql_escape_string(trimText(html_entity_decode(strip_tags($text))));
else
return trimText(html_entity_decode(strip_tags($text)));
}
The problem is this line:
$pf_args = str_replace("%s, ", "", PLACEHOLDER, 4 - count($_POST['ad']));
The last argument is just for outputting the number of replacements. You have to pass a variable here, not the expression 4 - count($_POST['ad'])
. Just remove the last argument and it will work.
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
http://php.net/manual/en/function.str-replace.php
If you want to limit the number of replacements, there are implementations of str_replace_once
in the comments of str_replace
's manual page.