如何从换行符中删除单词?

艾里克尔

我想每一个后弦:和每一个之前\n从以下方面:

När:Sent lördag kväll och natt till söndag\nVar:Främst norra Jämtland\nIntensitet:Väst ca 21 m/s\nKommentar:-

来源(alert[4]->info->description有人问这个问题):https : //opendata-download-warnings.smhi.se/api/version/2/alerts.json

我尝试过,explode()但是在那之后,我不知道如何删除\nVar数组中的其他内容。

array(5) {
  [0]=>
  string(4) "När"
  [1]=>
  string(45) "Sent lördag kväll och natt till söndag
Var"
  [2]=>
  string(34) "Främst norra Jämtland
Intensitet"
  [3]=>
  string(25) "Väst ca 21 m/s
Kommentar"
  [4]=>
  string(1) "-"
}

这是我想要的样子:

array(5) {
  [0]=>
  string(45) "Sent lördag kväll och natt till söndag"
  [1]=>
  string(34) "Främst norra Jämtland"
  [2]=>
  string(25) "Väst ca 21 m/s"
  [3]=>
  string(1) "-"
}

到目前为止,这是我尝试过的方法:

$content = file_get_contents('https://opendata-download-warnings.smhi.se/api/version/2/alerts.json');
$content = json_decode($content);

foreach($content->alert AS $alert) {
    if($alert->info->area->areaDesc == '013') {
        $desc = explode(':', $alert->info->description);
        $descc = explode("\n", $desc);    # Don't know how to explode by \n since it returns an error; explode() expects parameter 2 to be string
        echo '<pre>'; var_dump($desc); echo '</pre>';
    }
}
安德烈亚斯

您可以使用正则表达式捕获:之间的内容\n

$text = "När:Sent lördag kväll och natt till söndag\nVar:Främst norra Jämtland\nIntensitet:Väst ca 21 m/s\nKommentar:-";
preg_match_all("/\w+:(.*?)\\n/", $text, $match);
print_r($match);

输出:

Array
(
    [0] => Array
        (
            [0] => r:Sent lördag kväll och natt till söndag

            [1] => Var:Främst norra Jämtland

            [2] => Intensitet:Väst ca 21 m/s

        )

    [1] => Array
        (
            [0] => Sent lördag kväll och natt till söndag
            [1] => Främst norra Jämtland
            [2] => Väst ca 21 m/s
        )

)

https://3v4l.org/rpu5E


可悲的是我的regex mojo今天不在我身边。
所以我不得不改用旧的explode和array_functions。
我对数组进行多重分解 : \n 然后使用range()将不均匀键上的数组相交以获取所需的键。

$text = "När:Sent lördag kväll och natt till söndag\nVar:Främst norra Jämtland\nIntensitet:Väst ca 21 m/s\nKommentar:Sydväst 14-17 m/s. Avtagande söndag morgon.";

$exploded = multiexplode(array("\n",":"), $text);
if(count($exploded) > 2){
    $range = array_flip(range(1,count($exploded),2));
}else{
    $range = ["1" => 1];
}

$result = array_intersect_key($exploded, $range);
print_r($result);

输出:

Array
(
    [1] => Sent lördag kväll och natt till söndag
    [3] => Främst norra Jämtland
    [5] => Väst ca 21 m/s
    [7] => -
)

如果您需要0个索引数组,请使用array_values重置键。
https://3v4l.org/tbgLM

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章