1

編集: 配列を完全に解析しました (解析されていない 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.. であり、それが存在する場合、その後にある文字列を取得したい... どうすればよいですか? どんな助けでも大歓迎です!(またはより良い解決策...?)

必要なのは、ID が実際に配列内に含まれているかどうかを示すブール値の戻り値です。含まれている場合は、テキストが必要です。そうでない場合は、他のテキストを入れたいので知る必要があります (ここでは関係ありません)。

免責事項: これを nickb に渡すつもりです。

編集:この部分は今は無関係です:


これは私がこれまでに得たものですが、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;
    });
4

2 に答える 2

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);
于 2012-06-20T21:42:07.633 に答える
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

?>
于 2012-06-20T21:51:06.063 に答える