Есть ли лучший способ написать это регулярное выражение? - PullRequest
1 голос
/ 16 июля 2011

Я пытаюсь вытащить погоду из сети погоды. Этот код дает его мне, но он выглядит довольно длинным и возвращает два значения в массиве (поэтому мне нужно возвращать $ output [1], а не $ output [0]), когда я хочу, чтобы он возвращал только одно. Есть идеи?

$url=file_get_contents("http://www.theweathernetwork.com/weather/cans0057?ref=homecity");

preg_match('/<div id="obs_conds" class="hslice">.*?<img.*?alt="(.*?)".*?<\/div>/s',$url,$output);

print_r($output[1]);

Ответы [ 2 ]

3 голосов
/ 16 июля 2011

Я думаю, это здорово. Может быть, вы можете сделать из него ярлык

preg_match('/class="hslice">.*?<img.*?alt="(.*?)"/s',$url,$output);
0 голосов
/ 16 июля 2011

Я считаю, что preg_matches возвращает полное совпадение в первом элементе массива $ output [1] и $ output [1] текст, который соответствует первому захваченному заключенному в скобки подшаблону и т. Д. (http://php.net/manual/en/function.preg-match.php). Относительно оптимизации регулярных выражений)Я полагаю, вы пытаетесь вытащить все внутри <div id="obs_conds" class="hslice">, в таком случае я бы попытался вместо этого выполнить поиск в домине.

С другой стороны, возможно, лучшее решение - это связаться с сайтом иустановить клиент веб-службы. Мне кажется, что у них есть инфраструктура для этого.

...