PHP正则表达式函数冲突

时间:2013-04-17 10:49:29

标签: php preg-match

我将php 4函数用作spliti()以及php 5函数preg_match。它显示我的localhost(xampp版本1.7.2)中的输出。但是当我将它上传到我的服务器时,它在preg_match中没有显示任何内容并返回false。我不知道为什么。有人可以帮我吗?

我的功能是获取html页面的doctype和char-set。功能如下:

function GetContentType($Data) { // data as the html code
     print preg_match('@<meta\s+http-equiv="Content-Type"\s+content="([\w/]+)(;\s+charset=([^\s"]+))?@i', $Data, $matches);
    print var_dump($matches);
    if (isset($matches[3]))
        return $matches[3];
    else
        return "No Character set detected.";
}

function GetDocType($Data) { // Data as the html codes
    print preg_match('/<!DOCTYPE (\w.*)dtd">/is', $Data, $patterns);
    print var_dump($patterns);
    $Data = explode(" ", str_replace('"', "", $patterns[1]));
    $Data = $Data[0] . " " . $Data[3] . " " . $Data[4] . " " . $Data[5];
    return str_replace("//EN", "", $Data);
}

1 个答案:

答案 0 :(得分:1)

从PHP文档:

preg_match() 5.3.6 Returns FALSE if offset is higher than subject length.

我认为这将是问题......