если еще заявление - PullRequest
       2

если еще заявление

0 голосов
/ 13 марта 2011

Я анализирую текст из 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 ]

4 голосов
/ 13 марта 2011

У вас есть две проблемы:

Во-первых, в регулярном выражении #<code>(.*?) # ' 0-е совпадение (индекс в массиве) - это вся строка , тогда как1-й матч (индекс) будет содержимым паренов.Поэтому используйте $match[1].

Вторая проблема заключается в том, что вы получаете XML, но не используете каких-либо PHP-функций XML .Вы не можете безопасно анализировать XML с помощью регулярных выражений.Попробуйте DOM для размера.

$doc = new DOMDocument();
$doc->load($url);
$code_tags = $doc->getElementsByTagName('code');
echo $code_tags->item(0)->textContent;
3 голосов
/ 13 марта 2011

Полагаю, вы хотите посмотреть на $match[1], а не $match[0].$match[0] возвращает текст, соответствующий полному шаблону (теги кода и все).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...