0

$data の間および $data 内にテキストが存在するかどうかを検索します

すべての XML データは $data にあります

7431が存在するか検索したい

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>

... 結果:

echo 'はい、見つかりました'; // か否か

これどうやってするの?

4

4 に答える 4

2

これを試して:

$string = <<<XML
<?xml version='1.0'?> 
<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>
XML;

$xml = simplexml_load_string($string);

print_r($xml);

オブジェクトを返します。次に、この関数を使用してこのオブジェクトを配列に変換する必要があります

function object2array($object) {
    $return = NULL;
    if(is_array($object)) {
        foreach($object as $key => $value)
        $return[$key] = $this->object2array($value);
    } else {
        $var = @get_object_vars($object);
        if($var) {
            foreach($var as $key => $value)
            $return[$key] = $this->object2array($value);
        } else
        return $object;
    }
    return $return;
}

配列を返します。その後、次を使用して配列内の文字列を見つけることができます

in_array() 関数。

これがあなたを助けることを願っています。

于 2013-03-05T13:57:24.997 に答える
0
   if(strpos($data, '>7431<') === true) 
        {
        //code if 7431 is found...
        }
    else
        {
        //if not found....
        }
于 2013-03-05T13:55:15.373 に答える
0
if (strpos($data, '<id>7431</id>')) echo 'Yes it was found';
else echo 'No it was not found';

これは、文字列 $data に必要なテキストが含まれているかどうかを知りたいだけの場合に機能しますが、XML を解析する必要がある場合は、simpleXML API を調べてください。

編集: パフォーマンスの問題のために strpos() に変更し、タグを検索して"<id>7431</id>"( を実行することもできます">7431</")、7431 を含む文字列との一致を回避します。つまり 77431

于 2013-03-05T13:55:22.680 に答える
-2

文字列の前に文字を追加し、文字の'>'後に追加'<' して使用する必要がありますstrpos ()

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

干し草の山文字列で最初に出現する針の数値位置を見つけます。

haystack - 検索する文字列。

needle -needle が文字列でない場合は、整数に変換され、文字の序数値として適用されます。

offset - 指定した場合、文字列の先頭から数えたこの文字数で検索が開始されます。strrpos() および strripos() とは異なり、オフセットを負にすることはできません。

干し草の山文字列の先頭に対する針の位置を返します (オフセットとは関係ありません)。また、文字列の位置は 1 ではなく 0 から始まることに注意してください。

針が見つからなかった場合は FALSE を返します。

これを試して:

   <?php
    $data;//= to you xml data
    $findme   = '7431';
    $pos = strpos($data,'>'.$findme.'<');

    if ($pos === false) 
    {
        echo "NO it wasn't found'; // or not";
    } 
    else 
    {
        echo "Yes it was found";   
    }
    ?>
于 2013-03-05T13:54:38.963 に答える