2016-07-23 10 views
1

PHP単純なHTMLあなたはsample.phpページを持っており、それが含まれている場合はDOMがHREF
の括弧といくつかの問題を抱えている中:
PHP HTML DOM括弧のhref

<a href="this-href-contains-(parentheses)-and-more-texts"></a> 

をあなたはこのように行う場合:

またはこのような

$html = file_get_html('sample.php'); 
foreach($html->find('a[href*=(parentheses)]') as $element) 
     { 
      echo $element->href; 
     } 

$html = file_get_html('sample.php'); 
foreach($html->find('a[href*=this-href]') as $element) 
     { 
      echo $element->href; 
     } 

これは機能します。
しかし、あなたがした後、または括弧の前に何かを書く場合、それは動作しません:
この:

$html = file_get_html('sample.php'); 
foreach($html->find('a[href*=contains-(parentheses)]') as $element) 
     { 
      echo $element->href; 
     } 

またはこの:

$html = file_get_html('sample.php'); 
foreach($html->find('a[href*=(parentheses)-and-more]') as $element) 
     { 
      echo $element->href; 
     } 

は動作しません。シンプルなHTMLのDOMコード(多くのも、1)における明白な誤りがあるため動作しない理由がある

+0

URLにカッコが付いているのはいつですか? HTMLに準拠していない場合は、HTMLのバグです。 –

+0

@Julie Pelletier URLにカッコが付く可能性があります。https://msdn.microsoft.com/en-us/library/aa752574(VS.85).aspx – SAM

+0

ああ!知っておくといい。 –

答えて

1

あなたが行が表示されますsimple_html_dom.phpのライン673上:

return preg_match("/".$pattern."/i", $value); 

変更し、それに:

return preg_match("/".preg_quote($pattern)."/i", $value); 

プレスト、問題は解決しました。

https://sourceforge.net/p/simplehtmldom/bugs/ここでエラーを報告できますが、findメソッドなどのすべてのエラーが報告されている可能性があります。