首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用PHP字符串中的外部链接替换相对链接

用PHP字符串中的外部链接替换相对链接
EN

Stack Overflow用户
提问于 2018-06-27 17:19:21
回答 2查看 99关注 0票数 1

我正在使用一个编辑器,它只与文件的内部相对链接一起工作,这对我使用它的99%都很好。

然而,我也使用它在电子邮件正文中插入指向文件的链接,而相对链接并不能解决问题。

我不想修改编辑器,而是从编辑器中搜索字符串,并将相对链接替换为外部链接,如下所示

替换

代码语言:javascript
代码运行次数:0
运行
复制
files/something.pdf

使用

代码语言:javascript
代码运行次数:0
运行
复制
https://www.someurl.com/files/something.pdf

我想出了以下方法,但我想知道是否有更好/更有效的方法来使用PHP

代码语言:javascript
代码运行次数:0
运行
复制
<?php
$string = '<a href="files/something.pdf">A link</a>, some other text, <a href="files/somethingelse.pdf">A different link</a>';

preg_match_all('/<a[^>]+href=([\'"])(?<href>.+?)\1[^>]*>/i', $string, $result);

if (!empty($result)) {
    // Found a link.
    $baseUrl = 'https://www.someurl.com';
    $newUrls = array();
    $newString = '';

    foreach($result['href'] as $url) {
        $newUrls[] = $baseUrl . '/' . $url;
    }

    $newString = str_replace($result['href'], $newUrls, $string);

    echo $newString;
}
?>

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2018-06-27 17:42:30

您可以简单地使用preg_replace替换所有出现的以双引号开头的URL文件:

代码语言:javascript
代码运行次数:0
运行
复制
$string = '<a href="files/something.pdf">A link</a>, some other text, <a href="files/somethingelse.pdf">A different link</a>';

$string = preg_replace('/"(files.*?)"/', '"https://www.someurl.com/$1"', $string);

结果将是:

代码语言:javascript
代码运行次数:0
运行
复制
<a href="https://www.someurl.com/files/something.pdf">A link</a>, some other text, <a href="https://www.someurl.com/files/somethingelse.pdf">A different link</a>
票数 0
EN

Stack Overflow用户

发布于 2018-06-27 20:21:32

你真的应该使用DOMdocument来完成这项工作,但是如果你想使用正则表达式,下面的代码就可以完成这项工作:

代码语言:javascript
代码运行次数:0
运行
复制
$string = '<a some_attribute href="files/something.pdf" class="abc">A link</a>, some other text, <a class="def" href="files/somethingelse.pdf" attr="xyz">A different link</a>';
$baseUrl = 'https://www.someurl.com';
$newString = preg_replace('/(<a[^>]+href=([\'"]))(.+?)\2/i', "$1$baseUrl/$3$2", $string);
echo $newString,"\n";

输出:

代码语言:javascript
代码运行次数:0
运行
复制
<a some_attribute href="https://www.someurl.comfiles/something.pdf" class="abc">A link</a>, some other text, <a class="def" href="https://www.someurl.com/files/somethingelse.pdf" attr="xyz">A different link</a>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51058955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档