2016-06-30 6 views
1

入力文字列があるのSimpleXML:エンティティに引用符を処理

<input type="hidden" value="CZĘŚCI"" name="userlogin">

<input type="hidden" value="CZĘŚCI'" name="userlogin">

私ははこの戻りパースエラーをsimplexml_load_stringでこれを処理しようとします。

警告:simplexml_load_string():エンティティ:行1:パーサエラー

私は、これは正しくないHTMLであることを知っていると私はsanitaze HTMLのためhtmlspecialcharsかなどの機能を使用する必要がありますが、文字列がから私に来ます外部のソースと私はそれを制御することはできません。私はエラーでhtmlを解析する必要があります。

これを処理してこの要素の値を取得するにはどうすればよいですか?

+0

はsimplexml_load_string($ XMLDATA 'のSimpleXMLElement'、LIBXML_NOCDATA | LIBXML_NOBLANKSを)。 –

+0

ここで2番目の最後の引用符を削除します - 'value ="CZĘŚCI "" 'とルート項目を追加します - https://eval.in/598358 – splash58

+0

Manish Jesani、それはfalseを返す; splash58 - 入力文字列が – stdex

答えて

0

SimpleXmlは有効なXMLのみを解析できます。無効なHTMLを解析しようとしています。

あなたが望むものを達成するためにDOMを使用することができます。

$string = <<< HTML 
<input type="hidden" value="CZĘŚCI'" name="userlogin"> 
HTML; 

libxml_use_internal_errors(true); 
$dom = new DOMDocument; 
$dom->loadHTML('<?xml version="1.0" encoding="UTF-8"?>' . $string); 
echo $dom->getElementsByTagName('input')->item(0)->getAttribute("value"); 
libxml_use_internal_errors(false); 
関連する問題