1

HTML ページ内で、特定のアンカー テキストを含むリンクの href を取得する必要があります。

  </tr>
       <tr>
      <td><a href="/thisisafile.pdf" target="_blank" class="body1">
        This is some anchor text </a></td>
    </tr>
      <tr>

/thisisafile.pdf を取り出す必要があります。次のコードを試しました。

preg_match('~<a.*href="(.*?)".?>.?This is some anchor text.?</a>~sm',$temp,$matches,0);

$temp には上記のコードが含まれています。

オンラインの preg_match テスターで正規表現を試してみましたが、一致しました。区切り文字なしで正規表現テスターで正規表現を試しましたが、機能します。しかし、私のサーバー (Linux) で試してみると、0 の一致が得られました (false ではありません)。

4

2 に答える 2

1

おそらく別の重複。この質問の最初の回答を確認してください。正規表現エンジンは、特に .* greedy パターンを使用する場合に扱いにくくなる傾向があります。

A 要素の href 属性を取得する

于 2012-05-17T12:46:45.723 に答える
0

あなたは変わるべきです

~<a.*href="(.*?)".?>.?This is some anchor text.?</a>~sm

の中へ

~<a.*?href="(.*?)".*?>.*?This is some anchor text.*?</a>~sm

がありませんでした*.?は、1 文字のみを許可するか、まったく許可しないことを意味します。したがってtarget="_blank" class="body1"、テキストの前のスペースは許可されず、正規表現が失敗します。

EDIT :また、将来の問題を防ぐために、最初の.*貪欲さを に置き換えることで、貪欲さを減らしました。.*?

于 2012-05-17T12:45:47.790 に答える