0

MySQLデータをループして、XML用にクリーンアップしようとしていますが、可能な限り最も効率的な方法で実行しようとしています。以下はこれまでの私のコードです。このコードは1つのフィールドのみをCompanyNameクリーンアップします。可能であれば、同じループの場合は8つのフィールドすべてをクリーンアップします。

header("Content-type: text/xml");
$SQL_query = "SELECT * FROM COMPANYINFO ORDER BY CompanyName DESC"; 
$resultID = mysql_query($SQL_query, $linkID) or die("Data not found."); 

$xml_output = "<?xml version=\"1.0\"?>\n"; 
$xml_output .= "<markers>\n"; w

for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){ 
    $row = mysql_fetch_assoc($resultID); 

            // Escaping illegal characters 
        $row['CompanyName'] = str_replace("&", "&", $row['CompanyName']); 
        $row['CompanyName'] = str_replace("<", "<", $row['CompanyName']); 
        $row['CompanyName'] = str_replace(">", "&gt;", $row['CompanyName']); 
        $row['CompanyName'] = str_replace("\"", "&quot;", $row['CompanyName']); 

    $xml_output .= "\t\t<marker name='.$row['CompanyName']."' address='".$row['Address_1']."' phone='".$row['Phone']."' lat='".$row['Lat_Info']."' lng='".$row['Long_Info']."' county='".$row['County']."'/>\n";
} 

$xml_output .= "</markers>"; 


echo $xml_output; 
4

3 に答える 3

6

XML に入力する必要がある文字列を実行するhtmlspecialchars()と、うまくいくはずです。

結果の処理に関しては、foreachループを使用して配列を通過できます。

まとめると、次のようになります。

foreach($row as $column) {
    $row[$column] = htmlspecialchars($column);
}
于 2012-10-17T23:55:02.837 に答える
0

htmlspecialchars関数を確認してください。

于 2012-10-17T23:56:32.493 に答える
0

どうですか:

$row = mysql_fetch_assoc($resultID); 
$row = array_map('htmlentities', $row);
$xml_output .= "\t\t<marker name='.$row['CompanyName']."' address='".$row['Address_1']."' phone='".$row['Phone']."' lat='".$row['Lat_Info']."' lng='".$row['Long_Info']."' county='".$row['County']."'/>\n";
于 2012-10-17T23:57:51.883 に答える