2012-04-01 3 views
0

У меня ошибка: «Неустранимая ошибка: только переменные могут передаваться по ссылке» в следующих строках кода.Ошибка: «Только переменные могут передаваться по ссылке» в скрипте 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); 

Сообщение показывает ошибку в последней строке. Может ли кто-нибудь предложить мне причину?

(Редактировать): М() определяется как:

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))); 
} 
+3

В какой строке точно? И как определяется 'M'? – Gumbo

+0

@Gumbo: file_put_contents() и M() просто немного заменяют строки. – Shubham

+1

как насчет показа M-кода – SergeS

ответ

6

Проблема эта линия:

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

Последний аргумент просто для вывода количество замен. Вы должны передать здесь переменную, а не выражение . Просто удалите последний аргумент, и он будет работать.

mixed str_replace (mixed $search , mixed $replace , mixed $subject [, int &$count ])

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

Если вы хотите ограничить количество замен, существуют реализации str_replace_once в комментариях страницы str_replace «s вручную.

+0

Прошу прощения, что вы не открыты для конструктивной критики. – Basti

+0

str_replace_once :: работает, но нужно переписать на stripos :) – user956584

Смежные вопросы