PHP在包含XML数据的变量中搜索文本/数据

时间:2013-03-05 11:57:47

标签: php

我在变量中包含XML数据。

我现在需要在此变量中搜索特定文本。

有人能指出我正确的方向吗?我一直在谷歌搜索但没有好结果:o /

XML数据如下所示:

<status>
<connection_status>successful</connection_status>
<operation_status>successful</operation_status>
<Options>
<data_2>
<data_7422731>
<id>7431</id>
<assetId>2</assetId>
<startDate>2013-03-05 11:00:00</startDate>
<endDate>2013-03-05 12:00:00</endDate>
</data_7422731>
</data_2>
</Options>
</status>

我需要搜索指定的ID。

例如id“7431”

2 个答案:

答案 0 :(得分:2)

使用XML parserload the string to XML,然后使用get its children或使用XPATH,如:

/status/Options/data_2//id

答案 1 :(得分:1)

这与XML并不完全相关,但正如其他人所说,除非你提供更多细节和代码,否则我们无能为力。

如果您不想打扰设置XML解析器,这是一个快速的脏修复:

编辑:我更新了代码来修复一些小错误,然后我把它变成了一个函数,这样你就可以将它调成任何标记。

function findID($mystring,$tag)
{
    $begintag="<$tag>";
    $endtag = "</$tag>";
    $beginpos = strpos($mystring, $begintag);
    $endpos = strpos($mystring,$endtag );

    $length = $endpos - ($beginpos + strlen($beginpos) +1);

    $extractedvariable = substr($mystring, $beginpos + strlen($beginpos) +1, $length); 

    return $extractedvariable;
}

用法示例:

$data='<status>
            <connection_status>successful</connection_status>
            <operation_status>successful</operation_status>
            <Options>
            <data_2>
            <data_7422731>
            <id>7431</id>
            <assetId>2</assetId>
            <startDate>2013-03-05 11:00:00</startDate>
            <endDate>2013-03-05 12:00:00</endDate>
            </data_7422731>
            </data_2>
            </Options>
            </status>';

echo findID($data,'id');    

如果您要使用变量中的大多数标记,或者您有多级XML,我仍然建议使用XML解析器。