2017-05-12 21 views
-3

preg_match_allは、属性を持つタグ間でテキストを取得しようとしているときにfalseを返します。phpの属性を持つタグ間のテキストの取得

$str ="<h1 class="page-title" id="page-title-heading" aria-labelledby="page-title-heading toolbar-amount" > <span class="base" data-ui-id="page-title-wrapper" >Sarees</span> </h1>"; 
$king = preg_match('/<h1>(.*?)<\/h1>/s', $str, $matches); 
if ($king) { 
echo $matches[0]; 
}else{ 
echo "false"; 
} 

答えて

0

考慮可能な属性を取るために ">以外のもの" を追加します:

$king = preg_match('/<h1[^>]*>(.*?)<\/h1>/s', $str, $matches); 
         ^^^^^ 

デモ:私は私のquestion..yourコードに変更を加えたhelp..butためhttps://ideone.com/PJ4OqU

+0

感謝を以前のもののために働く...しかしこれのために... –

+0

それはそれのために働いています...しかし問題はここにあります...私はウェブサイトからコンテンツを取得するタスクを持っています...私が上の文字列それは働いている..しかし、私はそのウェブサイトをしようとしているときにそれはfalseを返す... –

+1

'<'のような特殊文字を対応するHTMLエンティティ '< 'に変換するので、' htmlspecialchars() '関数を使うべきではありません。正規表現は' <'でマッチできません。 @ShaikSalam – revo

関連する問題