если инструкция else

Я разбираю текст из 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]; } 

У вас здесь две проблемы.

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

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

 $doc = new DOMDocument(); $doc->load($url); $code_tags = $doc->getElementsByTagName('code'); echo $code_tags->item(0)->textContent; 

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