0

我想将相对 URL 替换为文本区域中的绝对 URL。所以是这样的:

/somefolder/somefile 

被替换为:

http://www.mysite123.com/somefolder/somefile

我有这个替换功能来完成这项工作:

$replaceStrs = array('href=/', "href='/", 'href="/');
$datdescription = str_ireplace($replaceStrs, 'href="http://www.' . $domain . "/", $datdescription);
  1. 问题是它需要在值的开头,因此不会替换/类似的 URL 。href=somefolder/somefile
  2. 如果零件中的/前后有空格,我也希望它能够工作。=href

第1点是最重要的。你能帮助改善这一点吗?

我已经看到 PHP 示例将相对 URL 替换为像这样的绝对 URL 。

但要求是已知相对 URL,/但在我的情况下,我没有管理这部分(我正在替换文本区域中的所有 URL)。

4

3 回答 3

0

I expanded Mihai Stancu answer for you!


<?php 
function expand_hrefs($link, $url) {
    return('href="http://'.$url.'/'.trim($link, '\'"/\\').'"');
}

function expand_srcs($link, $url) {
    return('src="http://'.$url.'/'.trim($link, '\'"/\\').'"');
}

$html = preg_replace('/href\s*=\s*(?<href>"[^\\"]*"|\'[^\\\']*\')/e', 'expand_hrefs("$1", "'.$url.'")', $html);
$html = preg_replace('/src\s*=\s*(?<src>"[^\\"]*"|\'[^\\\']*\')/e', 'expand_srcs("$1", "'.$url.'")', $html);
?>

This is MY first answer..

Stackoverflow.com is Brilliant!

于 2012-12-27T04:31:12.167 回答
0

当一个 PHP 函数已经可以为你做这件事时,为什么要大惊小怪呢?

http://php.net/manual/en/function.http-build-url.php

PS:它似乎只在PECL上可用。我刚刚测试了我的 Hostgator VPS(标准 CentOS 5 存储库)以及我的测试 WAMP 环境,它似乎在两者上都可用。

注意:另外,你真的不应该盲目地替换 HTML 片段。首先,它最终可能无法正常工作(编码问题),其次,它可能会给您的代码添加安全问题。

于 2012-05-20T14:39:02.217 回答
0

PHP:

function expand_links($link) {
    return('href="http://example.com/'.trim($link, '\'"/\\').'"');
}
$textarea = preg_replace('/href\s*=\s*(?<href>"[^\\"]*"|\'[^\\\']*\')/e', 'expand_links("$1")', $textarea);

我还更改了正则表达式以使用双引号或撇号。

于 2012-05-20T09:46:21.440 回答