我目前的HTML输出如下:
<a href="#">Coats</a> (12)
我想做的是一个正则表达式或操作,以这种方式将数字移动到锚点内:
<a href="#">Coats<span>12</span></a>
输出总是与我发布的格式相同。我只是想要消除()并将其包装在span中,并将其放在HTML结构中没有任何空间用于锚点。
(不要尝试任何事情,因为我不知道任何关于正则表达式的内容)
谢谢。
答案 0 :(得分:3)
$html = preg_replace('|<a href="(.+?)">(.+?)</a> \((\d+?)\)|i',
'<a href="$1">$2<span>$3</span></a>', $html);
需要注意的是,正则表达式通常不应用于操作HTML。
答案 1 :(得分:0)
我会使用
而不是像.+?
这样的非贪婪量词使用不匹配所有内容的句号(如换行符)
[^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>