2

HTML ページ内で H1 テキストを取得しようとしています。簡単にするために一部のページでマイクロフォーマットの使用を開始するまで正常に機能する正規表現を使用しました。

問題は、以前に使用した正規表現が機能しなくなったため、最初の正規表現が空の結果を返した場合に実行する別の正規表現を作成したことです。これは私が知っている非常にぎこちないです!!! 以下を 1 つの単純な正規表現に結合するにはどうすればよいですか? :

//Get the H1 title
function get_tag( $attr, $value, $xml )
{
   $attr = preg_quote($attr);
   $value = preg_quote($value);

   $tag_regex2 = '/<h1>(.*?)<\\/h1>/si';
   $tag_regex = '/<h1><span itemprop="itemreviewed">(.*?)<\\/span><\\/h1>/si';


   preg_match($tag_regex,
   $xml,
   $matches);

   if ($matches[1] == ""){
   preg_match($tag_regex2,
   $xml,
   $matches);
   };



   return $matches[1];
}
4

2 に答える 2

1

/<h1>(?:<[^>]+>)?(.*?)(?:<[^>]+>)?<\/h1>/si内のタグを削除する場合は一般的に機能し<h1/>ますが、おそらく少しカスタマイズする必要があります。特に上記のリストを削除したい場合は、 のspanようになります/<h1>(?:<span\s+itemprop=["']itemreviewed["'][^>]*>)?(.*?)(?:<[^>]+>)?<\/h1>/si優れたリファレンスについては、 RegularExpressions.infoをご覧ください。

于 2013-06-17T13:50:27.163 に答える