2017-06-02 11 views
-2

HTMLタグ以外の単語を置き換えたいと思います。HTMLタグ以外の単語だけを置換する

だから私は

<a href="test.html" title="Hello">Hello</a> 

を持って、私は「さようなら」私はこの結果を取得したいと「こんにちは」を置き換える場合:

<a href="test.html" title="Hello">Bye</a>. 

まあが、私は私が持っていることを学びましたそれを達成するためにDOMパーサーを使用してください。

だから私はhttps://github.com/sunra/php-simple-html-dom-parserを使用してそれを含めた。

は、今私は、DOMのテキストを取得するには

$test = $dom->find('text'); 

をしました。

今私はできた結果をループ:

foreach($test as $t) { 
    if (strpos($t->innertext,$word)!==false) { 
     $t->innertext = preg_replace(
       '/\b' . preg_quote($word, "/") . '\b/i', 
       "<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>", 
       $t->innertext,1 
      ); 
    } 
} 

しかし$item->titleは$ワードが含まれている場合は、残念ながら、HTML構造を壊しています。

+2

使用のDOMDocument – RomanPerekhrest

+0

あなたは既にこの質問をしました一度https://stackoverflow.com/questions/44324332/replace-only-rendered-text-in-html-source – RiggsFolly

+0

はい、pplはDOM-libを使用するように教えてくれました。やった。しかし、それは私の問題を解決しません。新しいケース;) – SPQRInc

答えて

0

混乱が多かったようです。 the docsによると、$dom->find($tag)はすべてのタグの配列を返しますが、textというタグを探していますか?

代わりに$test = $dom->find('a');を試してください。これは、より良い動作するはず

foreach($test as $t) { 
    if (strpos($t->innertext,$word)!==false) { 
     $t->innertext = preg_replace(
      '/\b' . preg_quote($word, "/") . '\b/i', 
      "<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>", 
      $t->innertext,1 
     ); 
    } 
} 

:変数$url$target$itemはどこから来る

はまた、あなたのコードでは、それは明らかではない

foreach($test as $t) { 
    if (strpos($t->innertext,$word)!==false) { 
     $t->innertext = preg_replace(
      '/\b' . preg_quote($word, "/") . '\b/i', 
      "Replacement", 
      $t->innertext,1 
     ); 
    } 
} 
関連する問題