Php 正在尝试重写url。这个代码正确吗?

Php 正在尝试重写url。这个代码正确吗?,php,url-rewriting,Php,Url Rewriting,我正在尝试用new.martianguy.com(所有href和scr属性)替换域martianguy.com的所有链接。在file\u get\u html函数中使用当前页面url可以吗?当我在本地主机上测试时,它什么也不做,30秒后超时。str\u ireplace函数不会在适当的位置更改字符串。您需要将该函数的输出分配给一个变量。str\u ireplace函数不会在适当的位置更改字符串。您需要将该函数的输出分配给一个变量。file\u get\u html()返回一个DOM对象(),而s

我正在尝试用new.martianguy.com(所有href和scr属性)替换域martianguy.com的所有链接。在file\u get\u html函数中使用当前页面url可以吗?当我在本地主机上测试时,它什么也不做,30秒后超时。

str\u ireplace函数不会在适当的位置更改字符串。您需要将该函数的输出分配给一个变量。

str\u ireplace函数不会在适当的位置更改字符串。您需要将该函数的输出分配给一个变量。

file\u get\u html()返回一个DOM对象(),而str\u ireplace需要一个字符串()

必须循环遍历DOM对象,并对每个节点进行替换。 您也可以只使用file_get_contents()并替换url的每次出现,但在这种情况下,它将不仅仅是src和href。

file_get_html()返回DOM对象(),而str_ireplace需要字符串()

必须循环遍历DOM对象,并对每个节点进行替换。
您也可以使用file\u get\u contents()替换url的每次出现,但在这种情况下,它将不仅仅是src和href。

在我看来,这个脚本是递归的。如果curPageUrl()返回当前页面/脚本的URL,并且调用curPageUrl()的脚本位于同一页面上,那么脚本不会通过http调用自身吗?如果是这样,它将解释30秒后的超时。脚本通过http递归地调用自己,直到第一次调用命中php为止,默认为30秒

一些建议:

  • 如果脚本必须在此页面上,请在curPageUrl()中将get变量添加到URL,然后仅在未设置变量时运行替换代码:

    <?php
    
    include('simple_html_dom.php');
    function curPageURL() {
        $pageURL = 'http';
        $pageURL .= "://";
        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .=    $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
        }else {
             $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
        }
        return $pageURL;
    }
    
    // Retrieve the DOM from a given URL
    $html = file_get_html(curPageURL());
    str_ireplace("http://martianguy.com","http://new.martianguy.com", $html);
    
    ?>
    
  • 使用javascript,它在加载html后在页面上运行,并在客户端进行替换

  • 这假设您尝试替换的内容是动态的。如果它是静态的,我会将它保存到一个文件中,然后使用另一个脚本进行替换


  • 希望有帮助

    在我看来,这个脚本是递归的。如果curPageUrl()返回当前页面/脚本的URL,并且调用curPageUrl()的脚本位于同一页面上,那么脚本不会通过http调用自身吗?如果是这样,它将解释30秒后的超时。脚本通过http递归地调用自己,直到第一次调用命中php为止,默认为30秒

    一些建议:

  • 如果脚本必须在此页面上,请在curPageUrl()中将get变量添加到URL,然后仅在未设置变量时运行替换代码:

    <?php
    
    include('simple_html_dom.php');
    function curPageURL() {
        $pageURL = 'http';
        $pageURL .= "://";
        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .=    $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
        }else {
             $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
        }
        return $pageURL;
    }
    
    // Retrieve the DOM from a given URL
    $html = file_get_html(curPageURL());
    str_ireplace("http://martianguy.com","http://new.martianguy.com", $html);
    
    ?>
    
  • 使用javascript,它在加载html后在页面上运行,并在客户端进行替换

  • 这假设您尝试替换的内容是动态的。如果它是静态的,我会将它保存到一个文件中,然后使用另一个脚本进行替换



  • 希望有帮助

    您希望得到什么结果?我希望src和href中的所有URL都会更改。例如,您是否应该更改为?您期望的结果是什么?我期望src和href中的所有URL都会更改。例如,如果更改为Infact,则最好每次都替换。如何在DOM中循环?(我是新来的):-)如果你真的想要整个html页面中所有出现的url(不仅仅是src和href属性),那么就用file\u get\u contents替换file\u get\u html。事实上,如果每个出现的url都被替换,那将是最好的。如何在DOM中循环?(我是新来的):-)如果你真的想在整个html页面中出现所有url(不仅仅是src和href属性),那么就用file_get_内容替换file_get_html。这是完全正确的,脚本是递归的。这确实有帮助,谢谢!如果我使用javascript,它仍然会在浏览器开始请求资源之前进行更改,对吗?如果它们是链接,则在有人单击它们之前不会请求它们。这是图像和其他资源的骗局。这里有一些关于这方面的讨论:(要点:它可能适用于较旧的浏览器,但在较新的浏览器上不可靠)@lukek这不是只有在客户端使用javascript时才正确吗?如果我使用服务器端脚本,则更改将在浏览器获取html之前进行。@lukek Okey,我使用的是您的建议1及其更改。但是“echo str_ireplace”(“oldURL”、“newURL”、$html);”附加到页面的现有源代码,而不是替换它。你也能帮我吗?谢谢你迄今为止对我的帮助。球在滚!这是完全正确的,脚本是递归的。这确实有帮助,谢谢!如果我使用javascript,它仍然会在浏览器开始请求资源之前进行更改,对吗?如果它们是链接,则在有人单击它们之前不会请求它们。这是图像和其他资源的骗局。这里有一些关于这方面的讨论:(要点:它可能适用于较旧的浏览器,但在较新的浏览器上不可靠)@lukek这不是只有在客户端使用javascript时才正确吗?如果我使用服务器端脚本,则更改将在浏览器获取html之前进行。@lukek Okey,我使用的是您的建议1及其更改。但是“echo str_ireplace”(“oldURL”、“newURL”、$html);”附加到页面的现有源代码,而不是替换它。你也能帮我吗?谢谢你迄今为止对我的帮助。球在滚!