我有类似的东西;
<a href="#" class="example">
Link 1
</a>
<a href="#" class="example">
Link 2
</a>
<a href="#" class="example">
Link 3
</a>
&#13;
我希望在锚文本之前添加标签。像这样;
<a href="#" class="example">
Link 1
</a>
<a href="#" class="example">
Link 2
</a>
<a href="#" class="example">
Link 3
</a>
&#13;
如何使用正则表达式执行此操作?
答案 0 :(得分:1)
根据他的评论,现在看来OP的目标是更常用,在开始和结束标记之间添加{em} 缩进所有行。{
然后是时候记住正则表达式不是一种解析HTML的好方法,就像在这里经常观察到的那样。
但在这个但不太宽泛的背景下,我们可以提出一个解决方案 除非有人找到更好的解决方案,否则我没有办法在没有2个嵌套步骤的情况下做到这一点:
\t
请注意,除了做得不好之外,由于$updated_text = preg_replace_callback(
'/(<a[^>]*>)\s*(.*?)\s*(<\/a>)/s',
function($matches) {
return $matches[1]
. "\n" . preg_replace('/([^\n]+)/', "\t$1", $matches[2])
. "\n" . $matches[3];
},
$text
);
(非贪婪)量词,它耗费了大量时间。
感谢@bobblebubble的建议我只是明白了什么意思&#34;我想要添加标签&#34; (我之前只想过浏览器标签:)。
但我发现它的解决方案有点过于笼统:它会将标签添加到任何行,而不是标签!
我更愿意只仔细查找.*?
个标签,并且只有在OP的示例中才会显示:
<a>