preg_replace 两次不同的url

jasonchong3329 2015-12-04 01:47:37
Orignal Code

<script language="javascript" src="/lta/vrl/scripts/vrlCommons.js"></script>
<script language="JavaScript" src="../scripts/formObjCommons.js"></script>


**My Code**

$url = "https ://example.com";
$url2 = "https ://example.com/lta/vrl";
$result = file_get_contents('https://example.com', false, $context);
$result = preg_replace('/src="(https:\/\/)?([^"]+)"/', "src=\"$url\\2\"", $result);


如何转换成以下?

<script language="javascript" src="$url/lta/vrl/scripts/vrlCommons.js"></script>
<script language="JavaScript" src="$url2/scripts/formObjCommons.js"></script>
...全文
71 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ustb 2015-12-04

$str = <<<EOT
<script language="javascript" src="/lta/vrl/scripts/vrlCommons.js"></script>
<script language="JavaScript" src="../scripts/formObjCommons.js"></script>
EOT;

preg_match_all('/<script[^<>]*src=[\'"]([^\'"]+)[\'"]><\/script>/isU', $str, $matches, PREG_SET_ORDER);
//print_r($matches);

$rs = array();
if (!empty($matches))
{
    foreach ($matches as $match)
    {
        if (substr($match[1], 0, 1) === '/')
        {
            // 如果是以/开头的,就替换成$url1
            $url = '$url1' . $match[1];
        }
        elseif (substr($match[1], 0, 2) === '..')
        {
            // 如果是以..开头的,就换成$url2
            $url = '$url2' . substr($match[1], 2);
        }
        else
        {
            $url = '';
        }
        $rs[] = preg_replace('/(src=[\'"])([^\'"]+)([\'"])/isU', '\\1' . $url . '\\3', $match[0]);
    }
}

print_r($rs);

/* output
Array
(
    [0] => <script language="javascript" src="$url1/lta/vrl/scripts/vrlCommons.js"></script>
    [1] => <script language="JavaScript" src="$url2/scripts/formObjCommons.js"></script>
)
*/
回复
xuzuning 2015-12-04
不知道你在说什么
回复
jasonchong3329 2015-12-04
因为那个page里面还有很多src js 所以不能放preg_replace('/src="(https:\/\/)?([^"]+)"/', "src=\"$url\\2\"", $result ,1); 其他的preg_replace都对 就是以下这个replace不对 https ://example.com../scripts/formObjCommons.js
回复
xuzuning 2015-12-04
preg_replace 的第 4 个参数是替换次数 你令其为 1 就可以了
回复
相关推荐
发帖
PHP
创建于2008-08-27

1.9w+

社区成员

“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
申请成为版主
帖子事件
创建了帖子
2015-12-04 01:47
社区公告
暂无公告