编辑:完全解析数组(它包含未解析的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是否实际包含在数组中 - 如果是,我需要文本。如果不是,我需要知道,因为我想放一些其他文本(这里不相关)。
免责声明:要给这个人一个昵称,他已经超出了真棒。
编辑:这部分现在无关紧要:
$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;
});
答案 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
?>