2012-01-04 15 views
1

私のコードは、私は、属性の真ん中にスペースがあるので、私のコードは動作していないように思われる次シンプルなHTML DOMスペース

foreach($html->find('div[class=this attribute]') as $itemtitle) { 
    echo $itemtitle; 
} 

です。それはそれをピックアップするようにスペースを回避する方法はありますか?滞在するスペース。

答えて

4

HTMLクラス名には実際にはスペースを使用できません。スペースは複数のクラスを区切るので、実際に要素に2つのクラス、すなわちthisattributeを与えています。

したがって、両方のクラスを持つ要素を見つけてください。これは、トリックを行う必要があります。

foreach($html->find('div.this.attribute') as $itemtitle) { 
    echo $itemtitle; 
} 

.は、クラスの省略形です。)


実際には、掲載され、元のコードが正常に動作します。コードのどこかにエラーがあります。$htmlには、必要な解析済みHTMLが含まれていません。コードのその部分を投稿できますか?

+0

class属性には絶対にスペースを入れることができますが、クラス名ではできません。 – alexn

+0

@alexn、よろしくお願いします。あいまいさがないように改訂されました。 – benesch

+0

私は – user1130861

2

はい、ちょうどそれを引用:

foreach($html->find('div[class="this attribute"]') as $itemtitle) { 
    echo $itemtitle; 
} 
0

試してみてください。

find('div[class="this attribute"]') 
1

をあなたがクラスを見ているので、あなたが使用できる属性:

こと、それをテストします
foreach($html->find('div.this.attribute') as $itemtitle) { 
    echo $itemtitle; 
} 

クラスthisおよびattributeの両方を有するが、必ずしも1つのクラスe空間内のスペース(前後に他のクラスを持つことができ、その順序はclass="attribute this"のように逆にすることができます)。

関連する問題