[英]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="(.*?)".?>.?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.