preg_replace change link from href(PRIG_REPLACE来自HREF的更改链接)
本文介绍了PRIG_REPLACE来自HREF的更改链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要替换curl获取的页面中的URL,并将正确的链接添加到图像和链接。我的php curl代码是:
<?php
$result = '<a href="http://host.org"><img src="Li9zZWMucG5n"></a>
<link href="./styles.css" rel="alternate stylesheet" type="text/css" />
<script type="text/javascript" src="Li9zdHlsZS5qcw=="></script>';
echo $result;
if (!preg_match('/src="aHR0cHM/Oi8v"/', $result)) {
$result = preg_replace('/src="KGh0dHA6Ly8oW14vXSspLyk/KFte"]+)"/', "src="aHR0cDovL2dvb2dsZS5jb20vXDM="", $result);
}
echo $result;
if (!preg_match('/href="https?://"/', $result)) {
$result = preg_replace('/href="(http://([^/]+)/)?([^"]+)"/', "href="http://google.com/\3"", $result);
}
echo $result;
?>
输出为:
//original links
<a href="http://host.org"><img src="Li9zZWMucG5n"></a>
<link href="./styles.css" type="text/css" />
<script src="Li9zdHlsZS5qcw=="></script><br />
//fixed SRC path
<a href="http://host.org"><img src="aHR0cDovL2dvb2dsZS5jb20vLi9zZWMucG5n"></a>
<link href="./styles.css" type="text/css" />
<script src="aHR0cDovL2dvb2dsZS5jb20vLi9zdHlsZS5qcw=="></script>
//fixed HREF path
<a href="http://google.com//google.com/./sec.png"></a>
<link href="http://google.com/./styles.css" type="text/css" />
<script src="aHR0cDovL2dvb2dsZS5jb20vLi9zdHlsZS5qcw=="></script>
但是当链接是"a"时,它会切断所有链接,只留下href值。
//from
<a href="http://host.org"><img src="Li9zZWMucG5n"></a>
//to src fix:
<a href="http://host.org"><img src="aHR0cDovL2dvb2dsZS5jb20vLi9zZWMucG5n"></a>
//ERRRROR when href fix make :
<a href="http://google.com//google.com/.sec.png"></a>
有谁能帮忙修理它吗?谢谢您
推荐答案
从正则表达式中删除此不必要的部分:([^/]+)/
它使您的正则表达式与下一个标记中的url完全匹配。
编码:
$result = preg_replace('/src="KGh0dHA6Ly8pPyhbXg=="]+)"/', "src="aHR0cDovL2dvb2dsZS5jb20vXDI="", $result);
$result = preg_replace('/href="(http://)?([^"]+)"/', "href="http://google.com/\2"", $result);
结果:
<a href="http://google.com/host.org"><img src="aHR0cDovL2dvb2dsZS5jb20vLi9zZWMucG5n"></a>
<link href="http://google.com/./styles.css" rel="alternate stylesheet" type="text/css" />
<script type="text/javascript" src="aHR0cDovL2dvb2dsZS5jb20vLi9zdHlsZS5qcw=="></script>
但是!我认为您真正想要的是一种将相对URL替换为绝对URL的方法。 为此,您可以使用以下regexp(使用此选项,您可以跳过if-check):
$result = preg_replace('/src="KD8haHR0cDovLykoW14="]+)"/', "src="aHR0cDovL2dvb2dsZS5jb20vXDE="", $result);
$result = preg_replace('/href="(?!http://)([^"]+)"/', "href="http://google.com/\1"", $result);
这篇关于PRIG_REPLACE来自HREF的更改链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:PRIG_REPLACE来自HREF的更改链接


猜你喜欢
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- PHP foreach() 与数组中的数组? 2022-01-01