-1

如果通过任何方式重定向 URL,我需要一个测试 URL 的函数。

到目前为止,我已经使用 cURL 来捕获标头重定向,但显然还有更多方法可以实现重定向。

例如。

<meta http-equiv="refresh" content="0;url=/somewhere/on/this/server" />

或 JS 脚本

window.location = 'http://melbourne.ag';

等等

我想知道是否有人有涵盖所有这些的解决方案。我会继续研究我的,并将结果发布在这里。

此外,一种快速的解析方式

<meta http-equiv="refresh"... 

在 PHP 中的任何人?

我认为这将包含在 PHP 的原生 get_meta_tags() 中……但我想错了:/

4

2 回答 2

0

它可以为标记语言完成(任何简单的标记解析器都可以),但一般不能用于像 JavaScript 这样的编程语言。

在 Web 文档中的程序中重定向相当于停止该程序。您正在要求一个能够判断另一个任意程序是否会停止的程序。这在计算机科学中被称为停机问题,是第一个不可判定的问题。

也就是说,您只能正确判断资源子集是否会发生重定向。

于 2012-09-12T09:16:37.117 回答
-1

到了一半,我会在编写 JS 检查时添加它们......

 function checkRedirect($url){
    // returns the redirected URL or the original
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    $out = curl_exec($ch);

    $out = str_replace("\r", "", $out);

    $headers_end = strpos($out, "\n\n");
    if( $headers_end !== false ) { 
        $out = substr($out, 0, $headers_end);
    }   

    $headers = explode("\n", $out);
    foreach($headers as $header) {
        if(strtolower(substr($header, 0, 10)) == "location: " ) { 
            $target = substr($header, 10);
            return $target;
        }   
    }   

     return $url;
 }
于 2012-10-06T05:35:27.267 回答