我当前的HTML输出如下:
<a href="#">Coats</a> (12)
我想做的是一个正则表达式或操作,以这样的方式将数字移动到内部锚点:
<a href="#">Coats<span>12</span></a>
输出总是和我发布的格式一样。我只是想去掉()并将其包装在span中,并将其放置在HTML结构中,不需要任何空间作为锚点。
(没有尝试任何东西,因为我对regex一无所知)
谢谢。
$html = preg_replace('|<a href="(.+?)">(.+?)</a> '(('d+?)')|i',
'<a href="$1">$2<span>$3</span></a>', $html);
需要注意的是,正则表达式通常不应用于操作HTML。
我将使用,而不是使用像.+?
这样的非贪婪量词来使用句点,因为它不会匹配所有内容(比如换行符)
- 不匹配字符类
[^blah]
- 并考虑到标签元素之间的空白在HTML中有效(如示例输入中所示)
Regex:
(<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>