preg_match没有给出预期的输出

时间:2015-03-10 17:47:11

标签: php regex pcre

我有以下代码,用于从域名中提取最后一个段:

示例:xkcd.com应从http://www.xckd.com

中提取
<?php
    if( isset($_SERVER['HTTP_ORIGIN'])) {   

        $from = "host origin";

        $origin_in = $_SERVER['HTTP_ORIGIN'];

        preg_match('/[^.]+\.[^.]+$/', $origin_in, $matches);
        $origin_out = $matches[0];


        print_r($matches);

    } else if($_SERVER['SERVER_NAME']) {

        $from = "server name";

        $origin_in = $_SERVER['SERVER_NAME'];

        preg_match('/[^.]+\.[^.]+$/', $origin_in, $matches);
        $origin_out = $matches[0];
    }

    header("Access-Control-Allow-Origin: *" );
    echo "origin input: ". $origin_in. "\n";
    echo "origin output: ". $origin_out. "\n";
    echo "from: ". $from;
    exit();

我已经逐字地发布了我的代码,以便最准确地表示正在处理的内容,因为我不确定哪里出了问题。

我得到的输出是

Array
(
    [0] => http://xxxx.com
)
origin input: http://xxxx.com
origin output: http://xxxx.com
from: host origin

为什么我的原点输出没有xxxx.com

我的代码可与此代码段形成对比,该代码段按预期工作:http://3v4l.org/nNKZn

感谢您的帮助。

0 个答案:

没有答案