我正在解析xml文件中的文本,该文件始终显示为“没有新代码”。每天至少一次,这个文本将变为不同的东西。我的目标是在更改时返回新文本,并在显示“没有新代码”时不执行任何操作。我的问题是它总是返回“没有新代码。”
//get source of remote site
$source = file_get_contents('http://someurl.com');
//match strings
preg_match('#<code>(.*?)</code>#', $source, $match);
//if match is equal to "There are no new codes." do nothing else return new match
if ( $match[0] == "There are no new codes." ) {
/* Do Nothing */;
} else {
echo $match_one[0];
}
答案 0 :(得分:4)
这里有两个问题。
首先,在正则表达式#<code>(.*?)</code>#'
中,第0个匹配(数组中的索引)是整个字符串,而第1个匹配(索引)将是parens的内容。因此,请使用$match[1]
。
您的第二个问题是您正在获取XML,但未使用any of PHP's XML functions。您无法使用正则表达式安全地解析XML。请尝试使用the DOM。
$doc = new DOMDocument();
$doc->load($url);
$code_tags = $doc->getElementsByTagName('code');
echo $code_tags->item(0)->textContent;
答案 1 :(得分:3)
我相信你想看看$match[1]
而不是$match[0]
。 $match[0]
返回与完整模式匹配的文本(代码标记和所有模式)。