1. 程式人生 > 實用技巧 >PHP 正則匹配a標籤

PHP 正則匹配a標籤

PHP匹配固定class連結的a標籤 使用修飾詞大寫的U轉換為非貪婪模式 要不然會從文中的第一個a標籤的開頭 匹配到最後一個a標籤的結尾
<?php
$c = '/<a class="ke-insertfile".*\>.*<\/a>/U';

還可以直接使用非貪婪的正則.*?

<?php
$c = '/<a class="ke-insertfile".*?\>.*?<\/a>/';

  

<?php
$str = '<p>百度<a class="ke-insertfile" href="http://www.baidu.com/">百度</a>騰訊<a class="ke-insertfile" href="http://www.qq.com/">騰訊</a><a href="aaa">這個a標籤不要匹配</a></p><a>asdad</a>';
//$str = '<a class="ke-insertfile" href="http">aaa</a><a class="ke-insertfile" href="http">bbb</a><a class="ke-insertfile" href="http">ccc</a>';
$c = '/<a class="ke-insertfile".*\>.*<\/a>/U';

preg_match_all($c, $str, $matches);

var_export($matches);
// 預期的正確的結果
$arr = array('<a class="ke-insertfile" href="http://www.baidu.com/">百度</a>', '<a class="ke-insertfile" href="http://www.qq.com/">騰訊</a>');
var_export($arr);

 匹配結果

如果不是使用貪婪模式的話結果是

<?php
$c = '/<a class="ke-insertfile".*\>.*<\/a>/';