检查标签之间的变量中是否存在文本

时间:2013-03-05 13:49:02

标签: php

搜索$ 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>

... 结果:

回声'是的,它被发现了'; //或不

我该怎么做?

4 个答案:

答案 0 :(得分: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()函数。

希望这会对你有所帮助。

答案 1 :(得分:0)

   if(strpos($data, '>7431<') === true) 
        {
        //code if 7431 is found...
        }
    else
        {
        //if not found....
        }

答案 2 :(得分: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

答案 3 :(得分:-2)

您需要在字符串之前添加char '>'和char '<'之后并使用strpos ()

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

找到第一次出现针的数字位置   haystack string。

haystack - 要搜索的字符串。

- 如果针不是字符串,则将其转换为整数并应用为字符的序数值。

偏移 - 如果指定,搜索将从字符串的开头开始计算此字符数。与strrpos()和strripos()不同,偏移量不能为负。

  

返回针相对于针的位置   haystack字符串的开头(与offset无关)。另请注意   字符串位置从0开始,而不是1。

     

如果未找到针,则返回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";   
    }
    ?>