假设我有以下一行:

09:00 23/02/2012#3.5#2.2#91#3.7#7.4#170#S#1033.1#(+1 Hpa / 3H).#0#3H##4.5#Plus de 2500m #6####00#### Brume.#


我想找到第15个#之后的第一个数字或字符
在这种情况下,我要查找的数字是6。

在此示例中:

03:00 24/02/2012#8.9#5.5#79#3.7#5.55#190#S#1031.3#(-1.1 Hpa / 3H).#0#3H##10#300 et 600m#7####00#####


我要寻找的号码是7。

但这并不总是数字,例如在此行中:

00:00 29/02/2012#3.3#-0.2#78##3.7##N#1023.6#(+0.3 Hpa / 3H).#0#3H##22#Plus de 2500m######### Le ciel est clair.#


第15个#之后的字符也是#。

那么如何使用PHP正则表达式获取此数字或字符?

我试过了

$content = '09:00 23/02/2012#3.5#2.2#91#3.7#7.4#170#S#1033.1#(+1 Hpa / 3H).#0#3H##4.5#Plus de 2500m #6####00#### Brume.#';

$iparr = preg_split ("/#/", $content);

echo $iparr[16];


但是对于第三个示例,它什么也没有给出。 (由于连续2个#)

最佳答案

您可以使用explode

$parts = explode('#', $string, 16);

$item = substr($parts[15], 0, 1);


在PHP> = 5.4.0中,您可以这样编写:

$string = '09:00 23/02/2012#3.5#2.2#91#3.7#7.4#170#S#1033.1#(+1 Hpa / 3H).#0#3H##4.5#Plus de 2500m #6####00#### Brume.#';
$index  =  16;

var_dump(explode('#', $string)[$index - 1]);

09-10 07:52
查看更多