【发布时间】:2018-12-06 02:57:58
【问题描述】:
我正在使用一个编辑器,它纯粹使用文件的内部相对链接,这对于我使用它的 99% 来说非常有用。
但是,我也使用它在电子邮件正文中插入文件的链接,而相对链接并不能解决问题。
我不想修改编辑器,而是想从编辑器中搜索字符串并将相关链接替换为外部链接,如下所示
替换
files/something.pdf
有
https://www.someurl.com/files/something.pdf
我想出了以下方法,但我想知道是否有更好/更有效的方法来使用 PHP
<?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;
}
?>
非常感谢
李
【问题讨论】:
标签: php regex preg-match preg-match-all