查找所有 href URL 并将其转换为另一个 URL PHP


find and convert all href url to another url php

我有一个 html 代码。 现在我想找到所有 href 标签,并希望将它们的 url 转换为另一个 url。我正在使用此代码

public function convertLinks($message,$stats_code)
{
  $click_link = site_url('click-'.$stats_code.'email');
  $content = explode("'n", $message);
  $URLs = array();
  for($i=0;count($content)>$i;$i++)
   {
     if(preg_match('/<a href=/', $content[$i]))
      {
        list($Gone,$Keep) = explode("href='"", trim($content[$i]));
        list($Keep,$Gone) = explode("'">", $Keep);
        $message= strtr($message, array( "$Keep" => $click_link.$Keep, ));
      }
   }
  return $message;
}

这段代码工作正常,但是当 2 个或更多 href 链接在一行中时,它只会转换第一个 href 链接,并且当 Ancher 标签也有任何其他标签(如类或目标)或任何其他无法转换链接时。请给我合适的解决方案提前谢谢你

public function convertLinks($message,$stats_code)
{
  $click_link = site_url('click-'.$stats_code.'email');
  $message = str_replace('<a','{smart_href_link_epro} <a',$message);
  $content = explode("{smart_href_link_epro}", $message);
  $a_count = count($content);
  for($i=0;$a_count>$i;$i++)
   { 
     if(preg_match('/href=/', $content[$i]))
      {
        list($Lost,$Keep) = explode("href='"", trim($content[$i]));
        list($Keep,$Lost) = explode("'"", $Keep);
        if($Keep!='#' && $Keep!='')
        $message= strtr($message, array( "$Keep" => $click_link.base64_encode(base64_encode($Keep)), ));
      }  
   } 
  return str_replace('{smart_href_link_epro}','',$message);
}

它实际上对我有用..