如何从数组中删除新行后的单词?

我想在每个:</ code>之后和每个之前获取字符串
</ code>来自以下内容:</ p>

 När:发送lördagkvällochnatt至söndag
Var:FrämstnorraJämtland
Intensitet:Västca21 m / s
Kommentar: -

</ code> </ pre>

来源( alert [4] - &gt; info-&gt; description </ code>截至此问题): https://opendata-download-warnings.smhi.se/api/version/ 2 / alerts.json </ p>

我尝试过 explode()</ code>但在那之后,我对如何删除一无所知
Var </ code>和数组中的其他人。</ p>

  array(5){
[0] =&gt;
string(4)“När”\ n [1] =&gt;
string(45)“发送lördagkvällochnatt直到söndag
Var”
[2] =&gt;
string(34)“FrämstnorraJämtland
Intensitet”
[3] =&gt;
string(25)“Västca21 m / s
Kommentar”
[4] =&gt;
stri ng(1)“ - ”
}
</ code> </ pre>

以下是我希望它的样子:</ p>

   array(5){
[0] =&gt;
string(45)“发送lördagkvällochnatt至söndag”
[1] =&gt;
string(34)“FrämstnorraJämtland”
[ 2] =&gt;
string(25)“Västca21 m / s”
[3] =&gt;
string(1)“ - ”
}
</ code> </ pre> \ n

以下是我到目前为止的尝试方式:</ p>

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

foreach($ content-&gt; alert AS $ alert){
if($ alert-&gt; info-&gt; area) - &gt; areaDesc =='013'){
$ desc = explode(':',$ alert-&gt; info-&gt; description);
$ descc = explode(“
”,$ desc); #不知道如何爆炸
因为它返回错误; explode()期望参数2为字符串
echo'&lt; pre&gt;'; 后续代码var_dump($ DESC); echo'&lt; / pre&gt;';
}
}
</ code> </ pre>
</ div>

展开原文

原文

I want to get the strings after each : and before each from the following:

När:Sent lördag kväll och natt till söndag
Var:Främst norra Jämtland
Intensitet:Väst ca 21 m/s
Kommentar:-

Source (alert[4]->info->description as of this question were asked): https://opendata-download-warnings.smhi.se/api/version/2/alerts.json

I've tried with explode() but after that, I am clueless of how I can remove Var and the others from the arrays.

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) "-"
}

Here's how I want it to look like:

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) "-"
}

Here's how I tried so far:

$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("
", $desc);    # Don't know how to explode by 
 since it returns an error; explode() expects parameter 2 to be string
        echo '<pre>'; var_dump($desc); echo '</pre>';
    }
}

dongxie5698
dongxie5698 toolong
一年多之前 回复
duanhan5230
duanhan5230 toolong
一年多之前 回复

2个回答



您可以使用正则表达式捕获:</ code>和
</ code>之间的内容。 </ p>

  $ text =“När:发送lördagkvällochnatt至söndag
Var:FrämstnorraJämtland
Intensitet:Västca21 m / s
Kommentar: - ;

”npreg_match_all (“/\w+:(.*?)\
/”,$ text,$ match);
print_r($ match);
</ code> </ pre>

输出: </ p>

  Array 

[0] =&gt;数组

[0] =&gt; r:发送lördagkvällochnatt直到söndag
\ n [1] =&gt; Var:FrämstnorraJämtland

[2] =&gt; Intensitet:Västca21 m / s

[1] =&gt;数组
(\ n [0] =&gt;发送lördagkvällochnatt至söndag
[1] =&gt;FrämstnorraJämtland
[2] =&gt;Västca21 m / s


< / code> </ pre>

https://3v4l.org/rpu5E < / p>

</ p>



今天我的正则表达式魔法不在我身边...

我有 切换到好的旧爆炸和array_functions。

我在:</ code>和
</ code>上多次展开数组然后我使用range()将数组交叉在不均匀的键上 得到所需的钥匙。

  $ text =“När:发送lördagkvällochnatt至söndag
Var:FrämstnorraJämtland
Intensitet:Västca21 m / s
Kommentar:Sydväst14-17 女士。 Avtagandensöndagorgon。“;

$ explosion = multiexplode(array(”
“,”:“),$ text);
if(count($ explosion)&gt; 2){
$ range = array_flip (范围(1,count($ explosion),2));
} else {
$ range = [“1”=&gt; 1];
}

$ result = array_intersect_key($爆炸, $范围);
print_r($结果);
</代码> </ PRE>

输出:</ p>

 <代码>阵列\ N(
[1] =&gt;发送lördagkvällochnatt至söndag
[3] =&gt;FrämstnorraJämtland
[5] =&gt;Västca21 m / s
[7] =&gt; -



</ code> </ pre>

如果您需要0个索引数组,请使用array_values重置密钥。

https://3v4l.org/tbgLM </ p>
</ div>

展开原文

原文

You can use regex to capture what is between : and .

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

Output:

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


Sadly my regex mojo is not with me today...
So I had to switch to good old explode and array_functions.
I multiexplode the array on : and then I intersect the array on the uneven keys using range() to get the keys needed.
$text = "När:Sent lördag kväll och natt till söndag
Var:Främst norra Jämtland
Intensitet:Väst ca 21 m/s
Kommentar:Sydväst 14-17 m/s. Avtagande söndag morgon.";

$exploded = multiexplode(array("
",":"), $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);

Output:

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] => -
)

If you need 0 indexed array use array_values to reset the keys.
https://3v4l.org/tbgLM

drvxclagw656708070
drvxclagw656708070 too long
一年多之前 回复
duanhanglekr37902
duanhanglekr37902 我确实注意到了一个bug。 如果我将$ text中的字符串更改为Kommentar:Sydväst14-17m / s。 Avtagandesöndagmorgon。 我收到以下错误:警告:range():步骤超过了第18行的F:\ Websites \ www \ vadret-justnu \ index.php中的指定范围。警告:array_flip()期望参数1为数组,给出bool 在第18行的F:\ Websites \ www \ vadret-justnu \ index.php中。警告:array_intersect_key():预期参数2为数组,在F:\ Websites \ www \ vadret-justnu \ index.php中给出null 在第18行
一年多之前 回复
doutou3725
doutou3725 更新的答案
一年多之前 回复
dozpox8752
dozpox8752 我刚注意到 正在修复。
一年多之前 回复
dongwei4103
dongwei4103 谢谢您的回答。 这很好用,尽管当时Kommentar:是空的或者是$ alert [int] - > info-> description中唯一的字符串。 即使内容中包含内容,该内容也会返回空白,如下所示:Kommentar:Natt直到söndagochnsöndagorgonvästlelersydvästca15 m / s。 (相同的来源,但是对于$ alert [0] - > info->描述此评论的编写时间)。
一年多之前 回复



您可以使用此函数</ p>

 &lt;?php 
function getContents($ str,$ startDelimiter,$ endDelimiter){
$ contents = array();
$ startDelimiterLength = strlen($ startDelimiter);
$ endDelimiterLength = strlen($ endDelimiter);
$ startFrom = $ contentStart = $ contentEnd = 0;
while(false!==($ contentStart = strpos($ str,$ startDelimiter,$ startFrom))){
$ contentStart + = $ startDelimiterLength;
$ contentEnd = strpos($ str,$ endDelimiter ,$ contentStart);
if(false === $ contentEnd){
break;
}
$ contents [] = substr($ str,$ contentStart,$ contentEnd - $ contentStart);
$ startFrom = $ contentEnd + $ endDelimiterLength;
}

返回$ contents;
}

$ sample ='När:发送lördagkvällochnatt直到söndag
Var:FrämstnorraJämtland
Intensitet:Västca21 m / s
Kommentar: - ';
print_r(getContents($ sample,':','
'));
?&gt;
</ code> </ pre>

RESULT </强> </ p>

 <代码>阵列\  n(
[0] =&gt; 发送lördagkvällochnatt至söndag
[1] =&gt; FrämstnorraJämtland
[2] =&gt; Västca21 m / s

</ code> </ pre>
</ div>

展开原文

原文

You can use this function

    <?php
function getContents($str, $startDelimiter, $endDelimiter) {
  $contents = array();
  $startDelimiterLength = strlen($startDelimiter);
  $endDelimiterLength = strlen($endDelimiter);
  $startFrom = $contentStart = $contentEnd = 0;
  while (false !== ($contentStart = strpos($str, $startDelimiter, $startFrom))) {
    $contentStart += $startDelimiterLength;
    $contentEnd = strpos($str, $endDelimiter, $contentStart);
    if (false === $contentEnd) {
      break;
    }
    $contents[] = substr($str, $contentStart, $contentEnd - $contentStart);
    $startFrom = $contentEnd + $endDelimiterLength;
  }

  return $contents;
}

$sample = 'När:Sent lördag kväll och natt till söndag
Var:Främst norra Jämtland
Intensitet:Väst ca 21 m/s
Kommentar:-';
print_r( getContents($sample, ':', '
') );
 ?>

RESULT

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
 )

dongluoheng3324
dongluoheng3324 too long
一年多之前 回复
dongwen9975
dongwen9975 当我在foreach循环中使用$ alert-> info-> description而不是$ sample尝试它时,它只返回一个空数组。 但如果我使用纯文本(如你的答案),它的工作正常。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐