2017-01-17 8 views
0

私はPHPのシンプルなHTMLドームパーサーを使用して、HTMLテーブルからセル値のコンテンツを抽出し、配列に格納しています。シンプルなPHP DOMパーサーは、プレーンテキストに不要なスペースを追加します

HTML

<td class="inflexion">so<span class="deviation">y</span></td> 
<td class="inflexion"><span class="deviation">fui</span></td> 
<td class="inflexion"><span class="deviation">er</span>a</td> 
<td class="inflexion">haber sería</td> 

所望の出力

大豆

FUI

時代

ハーバーのセリア

PHP

function getvariations($conjtables){ 
    $conjtables = str_get_html($conjtables); 
    $variations = []; 
    foreach ($conjtables->find('td[class=inflexion]') as $inflexion) { 
     $variations[] = $inflexion->plaintext; 
    } 
    return array_unique($variations); 
} 
$variations = getvariations($conjtables); 
foreach ($variations as $variation) { 
    echo $variation . '<br>'; 
} 

この作品は、しかし、出力(以下第3項を参照)、望ましくない空間とspan要素のいくつかのオカレンスを付加するように思われる:

大豆

FUI

ER

ハーバーのセリア

これを固定周りの任意の提案ですか?与えられた例の最後の項目のようにいくつかのセルが本当に複数の単語を持つので、私はスペースを任意に削除できません。代わりにplaintextstrip_tags

+0

内側 'span'から値を取得し、それとimplode'em –

+0

'a'が' span'の外側にあることがわかりましたか? '.deviation {margin:0; padding:0;}'のようなCSSルールを追加するか、 'a'を' span'に移動してください! – JustOnUnderMillions

+0

"a"は設計通りにの外側にあり、変更できません。私はそれらをMySQLテーブルに格納する目的で値が必要なので、CSSを変更することはあまり役に立ちません。 – TheLearner

答えて

2

使用innertext

function getvariations($conjtables){ 
    $conjtables = str_get_html($conjtables); 
    $variations = []; 
    foreach ($conjtables->find('td[class=inflexion]') as $inflexion) { 
     $variations[] = strip_tags($inflexion->innertext); 
    } 
    return array_unique($variations); 
} 
$variations = getvariations($conjtables); 
foreach ($variations as $variation) { 
    echo $variation . '<br>'; 
} 

出力:

大豆

FUI

時代

habersería

+0

問題は、私が欲しくないタグを保存していることだけです。たとえば、** era **の代わりに、** er **を返します。 – TheLearner

+1

気にしないでください。 strip_tags()は私のために何をしたのですか?ありがとう! – TheLearner

関連する問題