在PHP中,如何编辑变量以从中提取值以供进一步使用?

在PHP中,如何编辑变量以从中提取值以供进一步使用?,php,phpseclib,Php,Phpseclib,如何编辑变量以从中提取值以供进一步使用 正如您在代码中所看到的,在脚本运行之后,我有一个名为result的值,该值取自缓冲区。现在我需要从这个值($result)中提取一个特定的字段以供进一步使用。 值$result包含格式为“a=xxxxxx b=yyyyyyy c=zzzzz”的打印输出。因此,我只需要提取“b=”,即“b=”保留的值 这是可能的吗?我只需要一个值,在打印输出的中间。其余的应该删除。< /P> include('Net/SSH2.php'); $ssh = new Net_

如何编辑变量以从中提取值以供进一步使用

正如您在代码中所看到的,在脚本运行之后,我有一个名为result的值,该值取自缓冲区。现在我需要从这个值($result)中提取一个特定的字段以供进一步使用。 值$result包含格式为“a=xxxxxx b=yyyyyyy c=zzzzz”的打印输出。因此,我只需要提取“b=”,即“b=”保留的值

这是可能的吗?我只需要一个值,在打印输出的中间。其余的应该删除。< /P>

include('Net/SSH2.php');

$ssh = new Net_SSH2('hostname');
if (!$ssh->login('xxx', 'xxxxx')){
        exit('Login Failed');
        }
$value = $_POST['value'];


ob_start();     
echo $ssh->exec('xxxxxxxx '.$value.' xxxxxxxx');
$result = ob_get_contents();
ob_end_flush();
echo $result;

您可以将结果字符串分解为数组。类似的内容应该会有所帮助

$array = explode(' ',$result); //assuming whitespace is the separator for each
                               //item and there is no whitespace in the values.
foreach($array as $item)
{
    $data = explode('=',$item);
    if($data[0] == 'b') //search for the key you need
      break;
}
echo $data[1]; //output the value (in this case: 'yyyyyyy')
您也可以尝试使用字符串搜索。这可能对您更合适:

$array = explode(' ',$result);
foreach($array as $item)
{
    if(stristr($item,'GTI='))
    {
        $data = $item;
        break;
    }
}
echo $data;
更新 要获取字符串中的其他值,一种方法是构建一个key=>value对数组:

$array = explode(' ',$result); 
$data = array();
foreach($array as $item)
{
    $pair = explode('=',$item);
    $data[$pair[0]] = $pair[1]; // build array like array('a'=>'xxxxx','b'=>'yyyyy',c'=>'zzzzz')
}
// then access the values by the key
echo $data['a'];
echo '<br/>';
echo $data['b'];
$array=explode(“”,$result);
$data=array();
foreach($数组作为$项)
{
$pair=分解('=',$item);
$data[$pair[0]]=$pair[1];//构建类似数组的数组('a'=>'xxxxx','b'=>'yyyy',c'=>'zzzzz'))
}
//然后通过键访问这些值
echo$data['a'];
回声“
”; echo$data['b'];
是的。只需使用正则表达式或DOM解析器即可。但就目前情况而言,如果没有您想要解析的
$result
中的实际数据示例,就无法提供明确的答案。如果不知道
$result
包含什么内容,很难回答您的问题。结果类型是什么?是JSON吗?是文本吗?是否发送标题?如果是json,则需要对其进行解码,然后使用$json['key'],如果不是,则查找所需的值。抱歉,伙计们,我对php有点陌生。这是我的第一个项目。值$result包含格式为“a=xxxxxx b=yyyyyyy c=zzzzz”的打印输出。因此,我只需要提取“b=yyyyy”部分。@AshotAvetisyan您需要在问题中提供这些细节,以便其他人理解您所说的内容。评论被掩盖了。谢谢!我试过了,得到了一个值,虽然不是我需要的值。我不知道如何返回,但函数返回的是最后一个值,而不是我声明的值。例如,我使用delcareef($data[0]=='GTI=')并返回我“state=”。它的格式是'GTI=VALUE'吗?如果按“=”分解,则
$data[0]
应包含“GTI”(不带“=”符号),而
$data[1]
将精确包含“VALUE”!格式为“GTI=值”。然而,当我用“=”分解时,它会给我打印输出中最后一个变量的值,不管我在这里输入的是哪个值,如果($data[0]='b')。@AshotAvetisyan在你上面的评论中你有
if($data[0]='GTI=”)
将其更改为
if($data[0]='GTI')
此外,我还添加了一个使用字符串搜索的辅助解决方案。这两种选择都适合你。嗨。我尝试过GTI和GTI=以及它们中的任何一个都没有帮助。我注意到另一件奇怪的事。我已经尝试过检查($data[0]=='MNT')是否有效(第一个建议的代码),以及除了GTI之外的其他值。值的唯一区别是GTI是字母数字的(十六进制格式的值),但我仍然无法理解为什么它不能正常工作,因为字母数字的值。