2012-04-01 12 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); 

最後の行にエラーメッセージが表示されます。誰かが私に理由を示唆することはできますか?

(編集)

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

最後の引数は、ちょうど交換の数を出力するためのものである:

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

問題は、この行で:Mは()として定義されます。式ではなく、ここで変数を渡す必要があります。最後の引数を削除するだけで動作します。

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

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

あなたは代替品の数を制限したい場合は、str_replaceのマニュアルページのコメント欄にstr_replace_onceの実装があります。

+0

あなたが建設的な批判に晒されていないことは申し訳ありません。 – Basti

+0

str_replace_once ::動作しますが、striposに書き直す必要があります:) – user956584