有人可以帮我解决这个RegEx问题吗?

时间:2017-02-17 16:14:31

标签: php regex xml

我很擅长使用RegEx从XML文件中获取信息。我试图从每个部分获取主要信息以显示在数组中,但无法弄明白。我很感激为此提供任何帮助。

我认为我已将每个部分拆分出来,但是我不知道如何将所有部分放在一起以便在表格中显示结果数组。

我正在使用的XML可以在这里找到: 国道气象站数据 http://data.tii.ie/Datasets/Its/DatexII/WeatherData/Content.xml

我为我想要使用的部件创建的RegEx是:

道路ID

(NRA\d+)

日期&时间

(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2})

气温

<airTemperature>(\d{1,2}.\d{1})<\/airTemperature>

风向

<windDirectionCompass>(\w+)<\/windDirectionCompass>

风速

<windSpeed>(\d{1,3}.\d{1})<\/windSpeed>

道路温度

<roadSurfaceTemperature>(\d{1,3}.\d{1})<\/roadSurfaceTemperature>

如果有人能告诉我这是如何工作的,我会非常感激,因为我正努力将我的编码技能发展到新的领域。谢谢!

1 个答案:

答案 0 :(得分:0)

是的,因为@Chin Leung指出XML解析器是解决这个问题的最好方法。

以下是一种处理此问题的方法:

$xml = file_get_contents('http://data.tii.ie/Datasets/Its/DatexII/WeatherData/Content.xml');
        $xml_object = simplexml_load_string($xml);
        $publication = $xml_object->payloadPublication;
        $siteMeasurements = $publication->siteMeasurements;
        foreach($siteMeasurements as $siteMeasurement)
        {
            $road_id = str_replace('NRA', '', $siteMeasurement->measurementSiteReference);
            etc..
        }

使用http://us2.php.net/manual/en/function.simplexml-load-string.php

http://us2.php.net/manual/en/function.file-get-contents.php