if else声明

时间:2011-03-13 04:10:43

标签: php if-statement

我正在解析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];
}

2 个答案:

答案 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]返回与完整模式匹配的文本(代码标记和所有模式)。