PHP在可变文本中搜索并保存

时间:2018-06-30 13:17:19

标签: php

我有这个自动生成的变量:

$var = "WXYZ 300700Z 32011KT 9999 FEW035 SCT200 24/16 Q1007 NOSIG";

如何在此变量中搜索和保存“ 9999”?我不能使用substr,因为$ var的值始终在变化,并且始终在变量的另一个“位置”中。总是4个数字。

5 个答案:

答案 0 :(得分:3)

根据正则表达式(regex / regexp)的需要,您可以匹配4个用单词边界或空格字符包裹的数字。

if( preg_match('/\b([0-9]{4})\b/', $var, $matches) > 0 ) {
    // $matches[1] contains the number
}

但是请注意,单词边界匹配还将与非字母字符(美元符号($),连字符(-),句点(。),逗号(,)等符号)匹配。因此,字符串“ XYZ ABC 9843-AB YZV”将与“ 9843”匹配。如果您只想根据空格所包围的数字(空格,制表符等)进行匹配,则可以使用:

if( preg_match('/(?:^|\s)([0-9]{4})(?:\s|$)/', $var, $matches) > 0 ) {
    // $matches[1] contains the number
}

答案 1 :(得分:1)

使用爆炸是一种方法,我们需要将字符串转换为数组,变量之间用空格隔开,因此每次遇到空格“”时都会得到一个变量,我举了另一个例子来理解爆炸的原理。

<?php
$var = "WXYZ 300700Z 32011KT 9999 FEW035 SCT200 24/16 Q1007 NOSIG";
print_r (explode(" ",$var)); //Display the full array.
$var_search = explode(" ",$var);
echo $var_search[3];//To echo the 9999 (4th position).
?>
<br>
<?php
$var = "WXYZ+300700Z+32011KT+9999+FEW035+SCT200+24/16+Q1007+NOSIG";
print_r (explode("+",$var)); //Display the full array.
$var_search = explode("+",$var);
echo $var_search[3];//To echo the 9999 (4th position).
?>

我希望这就是您要寻找的

答案 2 :(得分:0)

这可行吗?

$var = "WXYZ 300700Z 32011KT 9999 FEW035 SCT200 24/16 Q1007 NOSIG";
if (strpos($var, '9999') == true {
    // blah blah
}
else{
    echo 'Value not found'
}

个人尚未对此进行测试,但是我认为您正在寻找符合以下条件的东西...

答案 3 :(得分:0)

您好,我将使用以下正则表达式使用preg_match正则表达式:\ d {4}

答案 4 :(得分:-1)

这是解决方法

var str1 = "WXYZ 300700Z 32011KT 9999 FEW035 SCT200 24/16 Q1007 NOSIG";
var str2 = "9999";
if(str1.indexOf(str2) != -1){
    console.log(str2 + " found");
}