php - 使用php从网站中提取数据

标签 php regex

我有以下网站: http://stationmeteo.meteorologic.net/metar/your-metar.php?icao=LFRS&day=070308

我想从中提取数据。 我尝试使用 file_get_contents 和一些正则表达式,但有些东西不起作用。

这是我尝试过的代码:

$content=file_get_contents('http://stationmeteo.meteorologic.net/metar/your-metar.php? icao=LFMN&day=010513');

preg_match('/00\:30 07\/03\/2008(.+)01\:30 07\/03\/2008/',$content,$m);
echo $m[0];
echo $m[1];

它给了我 undefined offset 0 和 1。 如果我直接将网页内容复制到 $content 而不是使用 file_get_contents ,则效果很好。

我错过了什么?

最佳答案

问题在于 .+ 匹配除换行符之外的任何字符,并且您尝试匹配的文本中存在换行符。

尝试

preg_match('~00:30 07/03/2008(.+)01:30 07/03/2008~s',$content,$m);

(顺便说一句,使用 ~ 作为分隔符,这样您就不必转义所有这些斜杠)

下一个问题是:为什么我将网页内容直接复制到$content时不会出现这个问题?好吧,当呈现网页时,所有空白都会标准化为单个空格,从而将页面源代码中存在的 \n (按 Ctrl-U 查看它)转换为一个简单的空格。 .+ 匹配该空格。

关于php - 使用php从网站中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16856813/

相关文章:

Java匹配器和模式: Why does this go on forever

php - 如何从以加号 (+) 开头的行创建段落

php - 当我从 View 表中获取数据时出现 Laravel 错误

php - 在 Gmail 帐户上使用 PHPMailer 添加自签名证书

php - 获取sql格式的服务器时间戳

php - Paypal Integration 持币

Java - 日期格式的正则表达式?

regex - Wiremock 与正则表达式不匹配

php - 如何将嵌套 sql 查询转换为 zend 1.12 格式

javascript - 使 str.index() 只匹配整个单词