.+?
すべてに一致しないような貪欲でない量指定子 (改行など) でピリオドを使用する代わりに、次のように使用します。
- 一致しない文字クラス
[^blah]
- HTMLで有効であることを考慮して、タグの要素間の空白に注意してください(サンプル入力に示されているように)
正規表現:
(<a\s*href[^>]+>[^<]+)(<\/a>)\s*\(([^)]+)\)
と置換する:
$1<span>$3</span>$2
ここでテストします:
http://regexr.com?324j8
PHP コード:
<?php
echo preg_replace('/(<a\s*href[^>]+>[^<]+)(<\/a>)\s*\(([^)]+)\)/','$1<span>$3</span>$2','<a href="#">Coats</a> (12)');
?>
サンプル入力:
<a href="#">Coats</a> (12)
<a href="#">Coats</a> (35)
<a href ="#">Coats</a> (234546)
<a href= "#">Coats</a>(1)
<a href="#" >Coats</a> (BlahBlah)
サンプル出力:
<a href="#">Coats<span>12</span></a>
<a href="#">Coats<span>35</span></a>
<a href ="#">Coats<span>234546</span></a>
<a href= "#">Coats<span>1</span></a>
<a href="#" >Coats<span>BlahBlah</span></a>