php - 查找并将所有 href url 转换为另一个 url php

标签 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 标签还具有任何其他标签(如 class 或 target 或任何其他标签时,它无法转换链接)。 请给我合适的解决方案 提前谢谢你

最佳答案

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);
}

它非常适合我..

关于php - 查找并将所有 href url 转换为另一个 url php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38408016/

相关文章:

php - 数据库设计 : foreign keys and normalization

php - Mysqldump - 如何从此文件恢复单个表?

javascript - 通过ajax函数将数据回显到表

php - Laravel:设置自定义主键值的方法

php - Laravel groupBy 和原始查询

php - Mysql - 查找重复值然后只返回最新的值然后如果它返回某个结果则忽略它

php - Paypal IPN 检测退款,PHP

php - 2 删除,只有一个工作 [POSTGRESQL]

javascript - 如何实现赞成票和反对票?

java - Android 使用 UrlConnection 从数据库中删除行