簡體   English   中英

正則表達式和preg_match-使用特定錨文本獲取href

[英]Regex and preg_match - get href for a with specific anchor text

我需要在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)。

可能是另一個副本。 檢查此問題的第一個答案。 正則表達式引擎有時會變得笨拙,尤其是當您使用。*貪婪模式時。

抓取A元素的href屬性

你應該改變

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

進入

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

您錯過了* .? 表示只允許輸入一個字符或不輸入任何字符。 因此, target="_blank" class="body1"和文本之前的空格不允許,從而導致正則表達式失敗。

編輯 :還用.*代替了它使您的第一個.*貪婪程度降低了.*? 以防止將來出現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM