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>
...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 就可以了

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧