2016-03-25 7 views
-1

誰でも下記のコードで何が間違っているのかを知る上で助けてください。PHPのDOMDocumentを使用してHTMLコンテンツを解析する際にエラーが発生しました

私は値以下のhtmlですnews_contentという名前のPHP変数を持っている...

<p><img src="./images/image1.jpeg" alt=""></p> 

変数news_contentのこの値は、データベースクエリから取得されます。

public function convert_to_tinymce_data($news_content) 
{ 
    $dom=new DOMDocument(); 

    $dom->loadHTML($news_content); 

    $img_nodes=$dom->getElementsByTagName('img'); 

    foreach($img_nodes as $link) 
    { 
     $img_link=$link->getAttribute('src'); 

     echo $link->getAttribute('src'); 

    } 
} 

しかし、何もエコーされ(空白のページを受信):

機能は、以下の変数news_contentを使用してのDOMDocumentオブジェクトを作成します。私はこのコードをしようと試みてきたし、それが動作

+0

エラー報告を有効にしましたか? ( 'error_reporting(E_ALL); ini_set( 'display_errors'、1);'スクリプトの先頭に);おそらくあなたのHTML文字列は空です。それ以外の場合は、HTMLを投稿する必要があります。正しいHTMLでは、上記のスクリプトが機能します。 – fusion3k

+0

私は直接HTMLの文字列、すなわち$ news_content = '

'を直接割り当てると、 ($ news_content)に格納されていると、DOMDocumentオブジェクトが作成されていても動作しません( " echo $ dom-> saveHTML() ")。はい、私は変数$ news_contentが空ではないことを確認しました。何か考えてください。ありがとう – stackoverflownewbie

+0

いいえ。データベースからHTMLを追加して投稿を編集できますか? (可能であれば、phpMyAdmin編集フォームから直接コピー&ペーストしてください) – fusion3k

答えて

0

$n = '<p><img src="./images/image1.jpeg" alt=""></p>'; 

function convert_to_tinymce_data($news_content){ 
$dom=new DOMDocument(); 

$dom->loadHTML($news_content); 
$img_nodes=$dom->getElementsByTagName('img'); 

foreach($img_nodes as $link) { 
     $img_link=$link->getAttribute('src'); 
     echo $img_link; 
    } 
} 

convert_to_tinymce_data($n); 

私はあなたがpublic functionを持って見たが、私はクラスが表示されません。クラスのメソッドではなくグローバル関数であれば、それが機能しない理由です。あるいは、関数を適切に呼び出さない。

ジャスト(関数定義がある何をあなたは持っている...それはあなたがあなたの関数の定義で同じ変数名を持つ...それを呼び出すと、外部の悪い習慣で、簡単に問題になることができます後に実行)追加するには:error_logファイルであることを確認し、興味深いものがあることをお知らせください。

+0

あなたのお返事ありがとうございます。メソッドはクラス内にあります(codeigniterを使用しています)。私はちょうどここに表示していませんでした。文字列を変数に(あなたのように)動作しますが、データベースから取り出して(テキストデータ型として格納されている)、変数($ news_content)に格納すると、DOMDocumentオブジェクトが取得されても機能しません"echo $ dom-> saveHTML()"を使ってチェック) – stackoverflownewbie

+0

データベースから値を取得した後、 'var_dump($ news_content);'を実行します。これと実際の例で何が違うのかを見て、それを調整してください。 –

+0

あなたの返事をもう一度お返事ありがとうございます。おかしなことに、以前は働いていなかったコード(と私は正直なところテストを何度も実行しました)が突然正しい出力を出し始めました。もちろん、私はあなたのvar_dumpの提案も試みました。しかし、何らかの形でコードが変更される前に作業を開始しました。しかし、あなたの素晴らしいサポートと指導に感謝します – stackoverflownewbie

関連する問題