假设我有以下行:
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次#)
你可以用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)