PHP中的字符串数组过滤

PHP中的字符串数组过滤,php,arrays,xml,api,Php,Arrays,Xml,Api,这使用Wolfram Alpha API获取附近的飞机,然后显示它。如何删除平面方向和短语“倾斜距离” 我的代码(PHP): 我希望它看起来像什么: Frontier flight 3278 Airlines flight 72 American Airlines flight 1241 American Airlines flight 396 Atlantic Southeast Airlines flight 6104 这个怎么样 foreach($value as $value1){

这使用Wolfram Alpha API获取附近的飞机,然后显示它。如何删除平面方向和短语“倾斜距离”

我的代码(PHP):

我希望它看起来像什么:

Frontier flight 3278
Airlines flight 72
American Airlines flight 1241
American Airlines flight 396
Atlantic Southeast Airlines flight 6104
这个怎么样

foreach($value as $value1){
        if(preg_match('~(flight\s+\d+)~mis', $value1, $flightdata) || preg_match('~\s+(.*?\s+Airlines)\s+~mis', $value1, $airlinedata)) {
            if(!empty($flightdata[1])) {
                echo $flightdata[1];
            }
            if(!empty($airlinedata[1])) {
                echo $airlinedata[1];
            }
            echo $value1 . '  ' . "\n";
        }
你没有在你想要的输出中提到人力资源,但是这些应该很容易删除

已更新(未测试,因为我在应答后删除了该文件):


身体{
背景色:rgba(255、255、255、0.3);
字体系列:“开放式Sans”,无衬线;
文本对齐:居中;
}
这个怎么样

foreach($value as $value1){
        if(preg_match('~(flight\s+\d+)~mis', $value1, $flightdata) || preg_match('~\s+(.*?\s+Airlines)\s+~mis', $value1, $airlinedata)) {
            if(!empty($flightdata[1])) {
                echo $flightdata[1];
            }
            if(!empty($airlinedata[1])) {
                echo $airlinedata[1];
            }
            echo $value1 . '  ' . "\n";
        }
你没有在你想要的输出中提到人力资源,但是这些应该很容易删除

已更新(未测试,因为我在应答后删除了该文件):


身体{
背景色:rgba(255、255、255、0.3);
字体系列:“开放式Sans”,无衬线;
文本对齐:居中;
}

Olivr3000这里是一个更新。昨天我试图编辑Chris85代码来发布这篇文章,但是我的编辑没有发布。我更改了最终foreach,以便按照您的要求输出航空公司数据

<html>    
<head>    
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>    
<style>
    body {
    background-color: rgba(255, 255, 255, 0.3);
    font-family: 'Open Sans', sans-serif;
    text-align:center;
    }
</style>
</head>
<?php
$url = 'http://api.wolframalpha.com/v2/query?input=planes+seen+from+dallas&appid=2UJ62E-Q6RT3T89P8';
$parser = new XMLReader;
$parser->open($url);
while ($parser->read()) {
    if ($parser->nodeType === XMLReader::ELEMENT) {
        while ($parser->name === 'pod' && $parser->getAttribute('title') !== 'Result') {
            $parser->next('pod'); // jump to the next pod node 
        }
        if ($parser->name === 'plaintext') {
            $str = $parser->readString();
            $parser->close();
            break;
        }
    }
}
$lines = explode("\n", $str);
$result = array();
foreach ($lines as $line) {
    $fields = explode(' | ', $line);
    $flight = array_shift($fields);
    $flight = $flight . "<hr>"; //DELETE IF DOESN'T WORK
    if ($flight === '') {
        $cols = $fields;
    } elseif (isset($fields[1])) {
        $result[$flight][$cols[0]] = $fields[0];
        $result[$flight][$cols[1]] = $fields[1];
    } 
}
foreach($result as $key=>$value) {
    foreach($value as $value1){
        if(preg_match('~(flight\s+\d+)~mis', $value1, $flightdata) || preg_match('~\s+(.*?\s+Airlines)\s+~mis', $value1, $airlinedata)) {
            if(!empty($flightdata[1])) {
                echo $flightdata[1];
            }
            if(!empty($airlinedata[1])) {
                echo $airlinedata[1];
            }
            echo $value1 . ' &nbsp;' . "\n";
       }
    }
}
?>

身体{
背景色:rgba(255、255、255、0.3);
字体系列:“开放式Sans”,无衬线;
文本对齐:居中;
}

Olivr3000这里是一个更新。昨天我试图编辑Chris85代码来发布这篇文章,但是我的编辑没有发布。我更改了最终foreach,以便按照您的要求输出航空公司数据

<html>    
<head>    
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>    
<style>
    body {
    background-color: rgba(255, 255, 255, 0.3);
    font-family: 'Open Sans', sans-serif;
    text-align:center;
    }
</style>
</head>
<?php
$url = 'http://api.wolframalpha.com/v2/query?input=planes+seen+from+dallas&appid=2UJ62E-Q6RT3T89P8';
$parser = new XMLReader;
$parser->open($url);
while ($parser->read()) {
    if ($parser->nodeType === XMLReader::ELEMENT) {
        while ($parser->name === 'pod' && $parser->getAttribute('title') !== 'Result') {
            $parser->next('pod'); // jump to the next pod node 
        }
        if ($parser->name === 'plaintext') {
            $str = $parser->readString();
            $parser->close();
            break;
        }
    }
}
$lines = explode("\n", $str);
$result = array();
foreach ($lines as $line) {
    $fields = explode(' | ', $line);
    $flight = array_shift($fields);
    $flight = $flight . "<hr>"; //DELETE IF DOESN'T WORK
    if ($flight === '') {
        $cols = $fields;
    } elseif (isset($fields[1])) {
        $result[$flight][$cols[0]] = $fields[0];
        $result[$flight][$cols[1]] = $fields[1];
    } 
}
foreach($result as $key=>$value) {
    foreach($value as $value1){
        if(preg_match('~(flight\s+\d+)~mis', $value1, $flightdata) || preg_match('~\s+(.*?\s+Airlines)\s+~mis', $value1, $airlinedata)) {
            if(!empty($flightdata[1])) {
                echo $flightdata[1];
            }
            if(!empty($airlinedata[1])) {
                echo $airlinedata[1];
            }
            echo $value1 . ' &nbsp;' . "\n";
       }
    }
}
?>

身体{
背景色:rgba(255、255、255、0.3);
字体系列:“开放式Sans”,无衬线;
文本对齐:居中;
}
奥利弗3000

不知怎的,我确实把上面的编辑搞砸了,没有包括最终用于测试的代码

这是我编辑的代码 你可以看到它在 来源是

在这里,它是有效的。很抱歉,未能及时将其正确张贴在此处

<html>    
<head>    
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>    
<style>
    body {
    background-color: rgba(255, 255, 255, 0.3);
    font-family: 'Open Sans', sans-serif;
    text-align:center;
    }
</style>
</head>
<?php
$url = 'http://api.wolframalpha.com/v2/query?input=planes+seen+from+dallas&appid=2UJ62E-Q6RT3T89P8';
$parser = new XMLReader;
$parser->open($url);
while ($parser->read()) {
    if ($parser->nodeType === XMLReader::ELEMENT) {
        while ($parser->name === 'pod' && $parser->getAttribute('title') !== 'Result') {
            $parser->next('pod'); // jump to the next pod node 
        }
        if ($parser->name === 'plaintext') {
            $str = $parser->readString();
            $parser->close();
            break;
        }
    }
}
$lines = explode("\n", $str);
$result = array();
foreach ($lines as $line) {
    $fields = explode(' | ', $line);
    $flight = array_shift($fields);

    if ($flight === '') {
        $cols = $fields;
    } elseif (isset($fields[1])) {
        $result[$flight][$cols[0]] = $fields[0];
        $result[$flight][$cols[1]] = $fields[1];
    } 
}
foreach($result as $key=>$value) {
    echo $key.'<BR>';
}
?>

身体{
背景色:rgba(255、255、255、0.3);
字体系列:“开放式Sans”,无衬线;
文本对齐:居中;
}
olivr3000

不知怎的,我确实把上面的编辑搞砸了,没有包括最终用于测试的代码

这是我编辑的代码 你可以看到它在 来源是

在这里,它是有效的。很抱歉,未能及时将其正确张贴在此处

<html>    
<head>    
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>    
<style>
    body {
    background-color: rgba(255, 255, 255, 0.3);
    font-family: 'Open Sans', sans-serif;
    text-align:center;
    }
</style>
</head>
<?php
$url = 'http://api.wolframalpha.com/v2/query?input=planes+seen+from+dallas&appid=2UJ62E-Q6RT3T89P8';
$parser = new XMLReader;
$parser->open($url);
while ($parser->read()) {
    if ($parser->nodeType === XMLReader::ELEMENT) {
        while ($parser->name === 'pod' && $parser->getAttribute('title') !== 'Result') {
            $parser->next('pod'); // jump to the next pod node 
        }
        if ($parser->name === 'plaintext') {
            $str = $parser->readString();
            $parser->close();
            break;
        }
    }
}
$lines = explode("\n", $str);
$result = array();
foreach ($lines as $line) {
    $fields = explode(' | ', $line);
    $flight = array_shift($fields);

    if ($flight === '') {
        $cols = $fields;
    } elseif (isset($fields[1])) {
        $result[$flight][$cols[0]] = $fields[0];
        $result[$flight][$cols[1]] = $fields[1];
    } 
}
foreach($result as $key=>$value) {
    echo $key.'<BR>';
}
?>

身体{
背景色:rgba(255、255、255、0.3);
字体系列:“开放式Sans”,无衬线;
文本对齐:居中;
}

您的数据结构在上一个答案与此答案之间的某个时间点发生了更改。如果这种情况继续发生,这些将永远不会起作用

<?php
$url = 'http://api.wolframalpha.com/v2/query?input=planes+seen+from+dallas&appid=2UJ62E-Q6RT3T89P8';
$parser = new XMLReader;
$parser->open($url);
while ($parser->read()) {
    if ($parser->nodeType === XMLReader::ELEMENT) {
        while ($parser->name === 'pod' && $parser->getAttribute('title') !== 'Result') {
            $parser->next('pod'); // jump to the next pod node 
        }
        if ($parser->name === 'plaintext') {
            $str = $parser->readString();
            $parser->close();
            break;
        }
    }
}
$lines = explode("\n", $str);
foreach ($lines as $line) {
    if(preg_match('~^(.*?)\s+(flight\s+\d+)~', $line, $matches)){
        echo $matches[1] . ' ' . $matches[2] . "\n";
    }
}
?>

您的数据结构在上一个答案与此答案之间的某个时间点发生了更改。如果这种情况继续发生,这些将永远不会起作用

<?php
$url = 'http://api.wolframalpha.com/v2/query?input=planes+seen+from+dallas&appid=2UJ62E-Q6RT3T89P8';
$parser = new XMLReader;
$parser->open($url);
while ($parser->read()) {
    if ($parser->nodeType === XMLReader::ELEMENT) {
        while ($parser->name === 'pod' && $parser->getAttribute('title') !== 'Result') {
            $parser->next('pod'); // jump to the next pod node 
        }
        if ($parser->name === 'plaintext') {
            $str = $parser->readString();
            $parser->close();
            break;
        }
    }
}
$lines = explode("\n", $str);
foreach ($lines as $line) {
    if(preg_match('~^(.*?)\s+(flight\s+\d+)~', $line, $matches)){
        echo $matches[1] . ' ' . $matches[2] . "\n";
    }
}
?>


API没有为数据提供输出选项,例如csv、json、xml等?是的,在xml中,$url是示例API输出的url。是的,我看到了,但您想要的数据实际上不是xml。正是纯文本使得这更容易出错。从
14英里NNW Frontier Airlines flight 72
开始,您只需要
14英里Frontier Airlines flight 72
并删除一个出现的“倾斜距离”,对吗?我已经删除了对“最终代码”的直接请求;我们鼓励OPS将答案看作是需要进一步工作的提示,而不是不用任何努力就可以逐字使用的代码(不管是免费代码的请求,通常还是作为一个磁铁来降低投票)。所以你知道,这里的读者也不喜欢用文本说话——“plz”和“thx”是其他不鼓励高质量回答的好方法。API不提供数据的输出选项,例如csv、json、xml等?是的,在xml中,$url是示例API输出的url。是的,我看到了,但你想要的数据实际上不是xml。正是纯文本使得这更容易出错。从
14英里NNW Frontier Airlines flight 72
开始,您只需要
14英里Frontier Airlines flight 72
并删除一个出现的“倾斜距离”,对吗?我已经删除了对“最终代码”的直接请求;我们鼓励OPS将答案看作是需要进一步工作的提示,而不是不用任何努力就可以逐字使用的代码(不管是免费代码的请求,通常还是作为一个磁铁来降低投票)。所以你们知道,这里的读者也不热衷于文字发言——“plz”和“thx”是阻止高质量答案的其他好方法。似乎不起作用,请给我最终代码让我接受答案。thx哪个编辑是新的;问最后代码的那个?上面的代码就在foreach`foreach($result as$key=>$value)的内部{#把上面的放在这里`请把整个剧本给我。Thx@chris86Sry,在验证后它是好的。但是运行它不会输出任何东西!我对@chris85代码的编辑给出了提问者想要的输出方式。大多数代码是chris85
body{背景色:rgba(255,255,255,0.3);字体系列:“开放式Sans”,无衬线;文本对齐:居中;}西南航空290次航班
ENY 3401次航班
联合航空1059次航班
美国航空324次航班
西南航空507次航班
似乎不起作用,请给我最后的代码让我接受回答。THX哪个编辑是新的;询问最后代码的那个?上面的代码就在您的foreach`foreach'的内部($result as$key=>$value){#把上面的内容放在这里`请给我整个脚本。Thx@chris86Sry,在验证后它是好的。但是运行它不会输出任何东西!我对@chris85代码的编辑给出了提问者想要的输出方式。大多数代码是chris85
body{背景色:rgba(255,255,255,0.3);字体系列:'Open Sans',Sans serif;文本对齐:中间;}西南航空290次航班
ENY 3401次航班
联合航空1059次航班
美国航空
United Airlines flight 1274
Delta Air Lines flight 2389
Mesa Airlines flight 3734
United Airlines flight 569
Shuttle America flight 3473
United Airlines flight 1274
Delta Air Lines flight 2389
Mesa Airlines flight 3734
United Airlines flight 569
Shuttle America flight 3473