正则表达式PHP在一定数量的#个字符后查找数字

mag*_*gie 2 php regex

假设我有以下行:

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.#
Run Code Online (Sandbox Code Playgroud)

我想在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#####
Run Code Online (Sandbox Code Playgroud)

我要找的号码是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.#
Run Code Online (Sandbox Code Playgroud)

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];
Run Code Online (Sandbox Code Playgroud)

但是对于第三个例子,它什么都没有.(因为连续2次#)

sil*_*ire 5

你可以用explode.

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

$item = substr($parts[15], 0, 1);
Run Code Online (Sandbox Code Playgroud)

在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]);
Run Code Online (Sandbox Code Playgroud)

  • @maggie只是做`$ parts [15] [0]`而不是使用`substr`(或`$ item = substr($ parts [15],0,1)`如果你想要的话 (2认同)