Php preg_replace将作为链接的图像用li包装起来

Php preg_replace将作为链接的图像用li包装起来,php,preg-replace,Php,Preg Replace,很抱歉标题有点混乱,但我正在尝试使用preg replace将标记环绕一个图像,该图像是一个链接(因此),我尝试了以下代码: preg_replace('/(<a [^>]+>)/','<li>\1</li>',$myVar ); preg_replace(“/(]+>)/”、“\1”、$myVar); 但这有一个奇怪的结果——有人能给我指出正确的方向吗?我知道可以用jQuery实现,但我更希望使用PHP解决方案。这可能会实现: preg_repla

很抱歉标题有点混乱,但我正在尝试使用preg replace将
  • 标记环绕一个图像,该图像是一个链接(因此
    ),我尝试了以下代码:

    preg_replace('/(<a [^>]+>)/','<li>\1</li>',$myVar );
    
    preg_replace(“/(]+>)/”、“
  • \1
  • ”、$myVar);
    但这有一个奇怪的结果——有人能给我指出正确的方向吗?我知道可以用jQuery实现,但我更希望使用PHP解决方案。

    这可能会实现:

    preg_replace('/<a(.*)>(.*)<\\/a>/','<li><a$1>$2</a></li>',$myVar );
    
    preg_替换(“/(.*)/”、“
  • $2
  • ”、$myVar);
    尽管您不应该使用注释中所写的正则表达式解析html字符串,但这里:

    $str = preg_replace('~<a .*?>\s*<img .*?>\s*</a>~i','<li>$0</li>',$str);
    
    $str=preg\u replace('~\s*\s*~i','
  • $0
  • ',$str);
    跟着我重复。无法使用正则表达式解析HTML。无法使用正则表达式解析HTML。无法使用正则表达式解析HTML。改用DOM解析器/操纵器。在任何情况下,替换都将生成无效的HTML,因为它将
  • 包装在开始标记周围,所以
  • ,这是无效的。因此,我刚刚获得了使用字符串替换替换任何
  • 的预期效果。这是一种非常特殊的情况,url始终处于这种模式,我总是希望一个链接周围有一个li,这是一件特别糟糕的事情吗?