質問

ようにしている探していただくためのリストをもと <a></a> タグです。これまでのリストをリンクしていただきたいと思い、名前のリンクは、リンクくんちには、ページ上)。うんです。

現在のとしています:

$lines = preg_split("/\r?\n|\r/", $content);  // content is the given page
foreach ($lines as $val) {
  if (preg_match("/(<A(.*)>)(<\/A>)/", $val, $alink)) {     
    $newurl = $alink[1];

    // put in array of found links
    $links[$index] = $newurl;
    $index++;
    $is_href = true;
  }
}
役に立ちましたか?

解決

標準免責条項が適用されます。正規表現でHTMLを解析することは理想的ではありません。成功は文字単位レベルでの入力の整形に依存します。あなたがこれを保証できない場合は、正規表現は、いくつかの点で正しいことを行うに失敗します。

言っている:

<a\b[^>]*>(.*?)</a>   // match group one will contain the link text

他のヒント

私の大ファンでregexesすことができ、お部屋の広さも適度で利用します。

使用実HTMLパーサです。

  • コードがより明確に
  • できるのが

インターネットで調べたPHPのHTMLパーサー、 この.

だから取り寄せた選りすぐりのワXHTML、その利用可能PHP標準のXMLパーサです。

<a\s*(.*)\>(.*)</a>

<a href="http://www.stackoverflow.com">Go to stackoverflow.com</a>

$ 1 =のhref = "www.stackoverflow.com"

$ 2 = stackoverflow.com

に移動します

私はここに以外のすべてを取り除くために同様の質問に答え>

再び正規表現、黒魔術、:)

私は1つをhref="https://stackoverflow.com/questions/331426/common-regular-expressions">ました。あなたはあなたのような非常に一般的regexpressionsがありますがあり、いくつかの興味深いリンクます。

  

グラビングHTMLタグ

     

<タグ\ bは[^>] >(。の?)RegexBuddyは、特定のHTMLタグの開閉のペアに一致すると、この正規表現を分析します。タグの間に何が最初に後方参照に取り込まれます。正規表現での疑問符は貪欲スターが行うのと同じようには、最初の終了タグの前ではなく、最後の前に停止したことを確認するために、星が怠惰になります。この正規表現は適切onetwooneのように、自分自身の中にネストされたタグが一致しません。

     

<([AZ] [A-Z0-9] )\ bは[^>] >(。*?)の任意の開閉ペアと一致しますRegexBuddyとこの正規表現を分析HTMLタグ。大文字小文字の区別をオフにしてください。この溶液中のキーは正規表現で後方参照\ 1を使用することです。タグの間に何が第二後方参照に取り込まれます。このソリューションはまた、自分自身にネストされたタグと一致しなくなります。

それ以外の場合:このリンクを見る:キーワード "リンク" する。リンクをフィルタリングするためのいくつかの興味深いアプローチがあります。

私はこのことができます願っています:)

グッドラック!

コース料理。正規表現を使用しては完全というわけではありませんが、perlの正規表現,

m!<a .*?>(.*?)</a>!i

べにの名前の最初のリンクをマッチのバッグを無視します。

制限:

  • 取り扱いはいたしません。複数のリンク一行
  • 取り扱いはいたしません。リンクも複数の行に展開されています。
  • でも試合ではアンカータグです。

お仕事ができるところによるすべてのラインを一つのコンセプトである"分割での配列(または複数行のリンク開始してセパレーターが不要になる。

ベストとの間に何のリストを作成する最も簡単な方法は、preg_match_allを使用することです。

例:

$pattern = '#<a[^>]*>([^<]*)<\/a>#';
$subject = '<a href="#">Link 1</a> <a href="#">Link 3</a> <a href="#">Link 3</a>';
preg_match_all($pattern, $subject, $matches);
print_r($matches[1]);

結果は次のようになります。

Array (
 [0] => Link 1
 [1] => Link 3
 [2] => Link 3
)

のパターンで

'<a.*?>(.*?)</a>'

あなたが得られます。

['sign up', 'log in', 'careers 2.0']

このマークアップでの検索:

<span id="hlinks-nav"><a href="/users/login?returnurl=%2fquestions%2f343115%2fregexp-for-finding-everything-between-a-and-a-tags">sign up</a><span class="lsep">|</span><a href="/users/login?returnurl=%2fquestions%2f343115%2fregexp-for-finding-everything-between-a-and-a-tags">log in</a><span class="lsep">|</span><a href="http://careers.stackoverflow.com">careers 2.0</a><span class="lsep">|</span></span>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top