我有一个 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);
}
它实际上对我有用..