Php 用正则表达式追加html标记

Php 用正则表达式追加html标记,php,regex,Php,Regex,我想将字符串更改为: <a href....>*</a> 致: 我已经试过了,但是我对正则表达式的理解太差了 $n = '/<a (.*)[^>]>/'; $h = '/<article><a(.*)[^>]>/i','/<\/a></articla>/'; $reg = preg_replace($n, $h, $content); $n='/]>/'; $h='/]>/i','/';

我想将字符串更改为:

<a href....>*</a>

致:


我已经试过了,但是我对正则表达式的理解太差了

$n = '/<a (.*)[^>]>/';
$h = '/<article><a(.*)[^>]>/i','/<\/a></articla>/';
$reg = preg_replace($n, $h, $content);
$n='/]>/';
$h='/]>/i','/';
$reg=preg_replace($n,$h,$content);

如果
$content
只是一个“字符串”而不是html,那么就用简单的方法:

$content = str_replace('</a>','</a></article>',str_replace('<a href=','<article><a href=',$content));
$content=str_replace(“”,”,str_replace(“您的解决方案将匹配,因此会匹配其他每个标记

\/a>

最后匹配结束符。(注意:<已经匹配)。

对于变量$h,结束标记应该是:首先,您有一个输入错误。其次,“我对正则表达式的理解太差了…”然后不要使用正则表达式,使用解析器。您好,这是我搜索的99%;)但是如果其他标记在我的锚点内,该怎么办。@user1606423改进了我的答案
$n = '/(<a [^>]*>([^<]*<(\/[^a])|[^\/])*\/a>)/i';
$h = '<article>${1}</article>';
$reg = preg_replace($n, $h, $content);
<a [^>]*>
(
[^<]*<
(\/[^a])|[^\/]
)*
\/a>