我怎样才能在数组中搜索一个字符串,然后在php中找到相同字符串之后的字符串?

时间:2012-06-20 21:39:33

标签: php json

编辑:完全解析数组(它包含未解析的JSON!)

array(22) {
  [0]=>
array(4) {
["responseData"]=>
array(1) {
  ["translatedText"]=>
  string(163) "21558299 this is the text that i want to end up with, excluding the id number at the start of the string"
}
["responseDetails"]=>
string(0) ""
["responseStatus"]=>
int(200)

我想要搜索的字符串是2155 ..而IFF它存在,我想得到它之后的字符串......我怎么能这样做?任何帮助非常感谢! (或者更好的解决方案......?)

我需要的是一个返回布尔值,告诉我ID是否实际包含在数组中 - 如果是,我需要文本。如果不是,我需要知道,因为我想放一些其他文本(这里不相关)。

免责声明:要给这个人一个昵称,他已经超出了真棒。

编辑:这部分现在无关紧要:


这是我到目前为止所得到的,但它返回null。 $ trans_json是上面引用的数组。 $ search [id]是另一个包含id字符串的数组。

$return = array_filter( $trans_json, function($el) { 
    if( !( $start = strpos( $el, $search[id]) === false)) {
            $str =  substr( $el, $start);
            return substr( $str, 0, strpos( $str, '}'));
    }
            return null;
    });

2 个答案:

答案 0 :(得分:1)

使用array_walk()

您的示例无效,因为$search未定义。你需要一个闭包(注意use ($search)

$search['id'] = '2s5d56b9712';
$return = array_walk( $trans_json, function( &$el) use( $search) { 
    if( !( ($start = strpos( $el, $search['id'])) === false)) {
        $str =  substr( $el, $start);
        $el = substr( $str, strlen( $search['id']) + 1, strpos( $str, '}'));
    }
});

var_dump( $trans_json);

答案 1 :(得分:0)

如果符合您的需要,请参阅下面的代码。

<?php

$subject = 'array(32) { [0]=> string(3266) "{"respString":{"feedbackText":"2s5d56b9712 the preceding id is the string i want to search for, and this is the rest of the text i want to get until here:"},"blablaarraycontinues...';

preg_match("/feedbackText\":\"2s5d(.*)\}/",$subject,$matches);

print_r($matches[1]); // output the matched string

?>