Ошибка, имеющая;в массиве str_replace? - PullRequest
0 голосов
/ 26 июля 2011

Это дает мне ошибку

$illegal = array("&", "<", ">", "\");
$legal = array("&amp;", "&lt;", "&gt;", "&quot;");

$row['name'] = str_replace($illegal, $legal, $row['name']);

это основная часть кода

$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;

Мои 2 вопроса

  1. Первый блок кода работает, быстрее или равен второму?
  2. Если второй блок быстрее, как я могу это исправить?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 26 июля 2011
$illegal = array("&", "<", ">", "\");

должно быть

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

Кроме того, обратите внимание на использование htmlspecialchars вместо собственного решения.

0 голосов
/ 26 июля 2011

для Вопроса 1: Вы можете проверить свою скорость выполнения, используя microtime ()

http://php.net/manual/en/function.microtime.php

<?php
    $time_start = microtime(true);

    // your code

    $time_end = microtime(true);
    $time = $time_end - $time_start;

    echo $time;
?>
...