1

私はここで新しく、一日中私をだましている質問を受けました。

私はPHPスクリプトを作成しました。このスクリプトは、cURLを介してWebサイトのソースコードを読み取り、DOMDocumentクラスを使用してサイトマップファイルを生成します。

それはほとんどすべての面で魅力のように働いています。問題は特殊文字にあります。

互換性の理由から、サイトマップファイルにはすべての特殊文字を番号付きエンティティとしてエンコードする必要があります。そして、私はそれを達成していません。

たとえば、私のエントリの1つ(サイトのURLから自動的に読み取られ、サイトマップファイルに書き込まれる)は次のとおりです。

http://www.somesite.com/serviços/redesign/

ソースコードでは、次のようになります。

* http: //www.somesite.com/servi**ç**os/redesign/*

これだけ。しかし、残念ながら、私は実際にそれを行う方法を理解していません。

ソースコードファイル、サーバーヘッダーなど...すべてがUTF-8としてエンコードされます。

DOMDocumentと関連する拡張機能を使用してXMLを構築しています。(基本的に、DOMDocument、$ obj-> createElement、$ obj-> appendChild)。

htmlentitiesはçの代わりにçを与えます str_replaceは機能しません。これにより、出力で文字が消えます。

$ obj-> createElement( "loc"、$ url);を使用していました。私のコードで、そしてちょうど今、私はPHPマニュアルで、エンティティエンコーディングをサポートするために$ document-> createTextNode($ page)を使用する必要があることを読みました。

まあ、それも機能していません。

これを解き放つ方法について何かアイデアはありますか?

ありがとう。

4

2 に答える 2

1

htmlentitiesには3番目の引数=使用する文字セットがあります。

htmlentities($string,ENT_COMPAT,"UTF-8");
于 2010-05-18T02:38:10.910 に答える
1

フィルタ拡張機能を使用しました:

$ url = filter_var($ url、FILTER_SANITIZE_STRING、FILTER_FLAG_ENCODE_HIGH)

使用する前に。これは、私が試した他のどのソリューションよりも良い結果になります(bcozはRFCに準拠しています)。

于 2010-10-04T23:25:13.357 に答える