php 解决host相对路径,php富文本相对路径替换成绝对路径

这段代码展示了两个PHP函数,用于将富文本中的相对URL转换为绝对URL(richTextAbsoluteUrl)和绝对URL转换为相对URL(richTextRelativeUrl)。它们通过正则表达式匹配和解析URL,确保在不同上下文中正确引用资源。
摘要由CSDN通过智能技术生成

上代码public static function richTextAbsoluteUrl($html_content, $host)

{

        if (preg_match_all("/(]+src=\"([^\"]+)\"[^>]*>)|(]+href=\"([^\"]+)\"[^>]*>)|(]+src='([^']+)'[^>]*>)|(]+href='([^']+)'[^>]*>)/i", $html_content, $regs)) {

foreach ($regs [0] as $num => $url) {

$html_content = str_replace($url, self::lIIIIl($url, $host), $html_content);

}

}

return $html_content;

}

public static function lIIIIl($l1, $l2)

{

if (preg_match("/(.*)(href|src)\=(.+?)( |\/\>|\>).*/i", $l1, $regs)) {

$I2 = $regs [3];

}

if (strlen($I2) > 0) {

$I1 = str_replace(chr(34), "", $I2);

$I1 = str_replace(chr(39), "", $I1);

} else {

return $l1;

}

$url_parsed = parse_url($l2);

$scheme = isset($url_parsed['scheme']) ? $url_parsed ["scheme"] : '';

if ($scheme != "") {

$scheme = $scheme . "://";

}

$host = isset($url_parsed ["host"]) ? $url_parsed['host'] : '';

$l3 = $scheme . $host;

if (strlen($l3) == 0) {

return $l1;

}

$path = isset($url_parsed ["path"]) ? dirname($url_parsed ["path"]) : '' ;

if(!empty($path)){

if ($path [0] == "\\") {

$path = "";

}

}

$pos = strpos($I1, "#");

if ($pos > 0)

$I1 = substr($I1, 0, $pos);

//判断类型

if (preg_match("/^(http|https|ftp):(\/\/|\\\\)(([\w\/\\\+\-~`@:%])+\.)+([\w\/\\\.\=\?\+\-~`@\':!%#]|(&)|&)+/i", $I1)) {

return $l1;

} //http开头的url类型要跳过

elseif ($I1 [0] == "/") {

$I1 = $l3 . $I1;

} //绝对路径

elseif (substr($I1, 0, 3) == "../") { //相对路径

while (substr($I1, 0, 3) == "../") {

$I1 = substr($I1, strlen($I1) - (strlen($I1) - 3), strlen($I1) - 3);

if (strlen($path) > 0) {

$path = dirname($path);

}

}

$I1 = $l3 . $path . "/" . $I1;

} elseif (substr($I1, 0, 2) == "./") {

$I1 = $l3 . $path . substr($I1, strlen($I1) - (strlen($I1) - 1), strlen($I1) - 1);

} elseif (strtolower(substr($I1, 0, 7)) == "mailto:" || strtolower(substr($I1, 0, 11)) == "javascript:") {

return $l1;

} else {

$I1 = $l3 . $path . "/" . $I1;

}

return str_replace($I2, "\"$I1\"", $l1);

}

/**

*  富文本绝对路径替换成相对路径

* @param $html_content

* @param $host

* @return mixed

*/

public static function richTextRelativeUrl($html_content, $host)

{

return str_replace($host, '', $html_content);

}

————————————————

版权声明:本文为CSDN博主「廖圣平」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_22823581/article/details/89474897

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值