現在、HTML出力は次のとおりです。
<a href="#">Coats</a> (12)
私がやりたいのは、次のような方法で数値をアンカー内に移動する正規表現または操作です。
<a href="#">Coats<span>12</span></a>
出力は常に私が投稿したのと同じ形式です。( ) を削除してスパンでラップし、アンカー用の HTML 構造内にスペースを入れずに配置するだけです。
(正規表現について何も知らないので、何も試しませんでした)
ありがとうございました。
$html = preg_replace('|<a href="(.+?)">(.+?)</a> \((\d+?)\)|i',
'<a href="$1">$2<span>$3</span></a>', $html);
通常、HTML の操作に正規表現を使用しないでください。
.+?すべてに一致しないような貪欲でない量指定子 (改行など) でピリオドを使用する代わりに、次のように使用します。
[^blah]正規表現:
(<a\s*href[^>]+>[^<]+)(<\/a>)\s*\(([^)]+)\)
と置換する:
$1<span>$3</span>$2
ここでテストします:
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>