搜索$ 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>
... 结果:
回声'是的,它被发现了'; //或不我该怎么做?
答案 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";
}
?>