2011-07-26 16 views
0

これは私の2つの質問がエラーがあります。 str_replace配列で?

  1. が速いか等しい、動作するコードの最初のブロックであります

    $xml_output = "<?xml version=\"1.0\"?>\n"; 
    $xml_output .= "<products>\n"; 
    
    for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){ 
        $row = mysql_fetch_assoc($resultID); 
        $xml_output .= "\t<product>\n"; 
        $xml_output .= "\t\t<id>" . $row['id'] . "</id>\n"; 
         // Escaping illegal characters 
    $illegal = array("&", "<", ">", "\"); 
    $legal = array("&amp;", "&lt;", "&gt;", "&quot;"); 
    
    $row['name'] = str_replace($illegal, $legal, $row['name']); 
    
    
        $xml_output .= "\t\t<name>" . $row['name'] . "</name>\n"; 
        $xml_output .= "\t</product>\n"; 
    } 
    
    $xml_output .= "</products>"; 
    
    echo $xml_output; 
    

    これは、コードの主要な部分である私にエラー

    $illegal = array("&", "<", ">", "\"); 
    $legal = array("&amp;", "&lt;", "&gt;", "&quot;"); 
    
    $row['name'] = str_replace($illegal, $legal, $row['name']); 
    

    を与えます第二に?

  2. 2番目のブロックが高速な場合は、どうすれば修正できますか?

ありがとうございます。

+0

と、エラーが何であるかを使用して、実行時の速度をテストすることができますか? ;) –

+0

あなたの投稿で構文の強調表示が壊れているという事実は、あなたに問題の1つを指摘するはずです。 – Mat

+0

'$ illegal = array("& "、" <", "> "、" \ ");' '\"に2番目の引用符がありません。あなたは '' \ ""の代わりに '' "' 'を使うことができます。 – Wiseguy

答えて

4
$illegal = array("&", "<", ">", "\"); 

さらに

$illegal = array("&", "<", ">", '"'); 

でなければなりませんが、代わりに独自のソリューションをhtmlspecialcharsを使用して見ています。質問1について

+1

'' " '''に基づいて、彼は引用符 '' \ "" 'を必要とし、スラッシュ' "\\" 'は要求しません。 – Wiseguy

+0

@ウィズグイ:そうです、私は私の答えを編集しました。 – GWW

+0

ありがとうございます。 +1を 'htmlspecialchars()'と一重引用符を使用するといいます – Wiseguy

関連する問題