0

データベースにアクセスしてURLのリストを取得し、それらをxml構造に配置して、xmlファイルを作成するphp関数を作成しようとしています。

問題は、これらのURLの一部には、HTMLでエンコードされたアンパサンドが含まれていることです。したがって、データベースは良好ですが、現在、私の関数がこれらのURLを取得しようとすると、スクリプトはアンパサンドで停止し、終了しません。

データベースからのリンクの例:

http://www.mysite.com/myfile.php?select=on&league_id=8&sport=15
function buildXML($con) {
//build xml file
$sql = "SELECT * FROM url_links";
$res = mysql_query($sql,$con);

$gameArray = array ();

while ($row = mysql_fetch_array($res))
    {
    array_push($row['form_link']);
    }

$xml = '<?xml version="1.0" encoding="utf-8"?><channel>';

foreach ($gameArray as $link)
    {   
        $xml .= "<item><link>".$link."</link></item>";  
    }

$xml .= '</channel>';   
file_put_contents('../xml/full_rankings.xml',$xml);
}

mysql_close($con);
session_write_close();

データベース内のリンクを変更する必要がある場合は、それを行うことができます。

4

4 に答える 4

1

でPHPを使用html_entity_decode()して、$linkに変換し&amp;直すことができます&

XMLでは、リンクをラップイン<![CDATA[]]>して文字を含めることもできます。

$xml .= "<item><link><![CDATA[" . html_entity_decode($link) . "]]></link></item>"; 

更新
あなたが実際に何も入れていないことに気づきました$gameArray

array_push($row['form_link']);

試す:

$gameArray[] = $row['form_link'];

* @Musaは、正当な信用のために、最初にそれに気づいたようです。

于 2012-10-17T18:40:14.250 に答える
1

この行を見てください

array_push($row['form_link']);

$gameArray配列には何も入れないでください。

array_push($gameArray, $row['form_link']);
于 2012-10-17T18:42:03.797 に答える
0

htmlspecialchars_decodeを使用する必要があります。渡された文字列内のエンコードされた特殊文字をデコードします。

于 2012-10-17T18:39:11.193 に答える
0

これはおそらくあなたが探しているものです:

http://www.php.net/manual/en/function.mysql-real-escape-string.php

ドキュメントを読んでください。ページの下部に例があります...

oracleSQL と MySQL の「&」は、クエリで論理演算子として使用されるため、エラーが発生します。

HTMLをデコードすることもできます...

于 2012-10-17T18:41:17.823 に答える