如何在php中的下划线(_)之前找到数值

时间:2013-11-27 06:29:09

标签: javascript php

早上好。我有一个这样的字符串:

$val="you-nick-name-2_yp52958122c7593";

现在我只希望在下划线之前使用此字符串中的2,为此我尝试通过替换字符串并执行类似这样的操作:

$first = strrpos($val,"-");
echo substr($val,$first+1)."<br>";

//output

2_yp52958122c7593

但我想从这个字符串中只想2,并希望在_之后减去所有字符串。 谢谢你的帮助。

5 个答案:

答案 0 :(得分:2)

使用爆炸是不可靠的。正则表达式更好。

$val="you-nick-name-2_yp52958122c7593";

$found = preg_match('/(\d+)_/', $val, $matches) ? $matches[1] : null;

如果$ val字符串有多个2_的实例(例如'one 3_ two 4_),则可能会出现问题。取决于你想要达到的目标,你仍然可以使用preg_match和preg_match_all函数来获得第一场比赛或所有比赛。

答案 1 :(得分:1)

$newval = explode( '_', $val );
$data = explode( '-', $newval[0] );
$your_number = $data[3];

答案 2 :(得分:1)

有很多可能做到这一点..

方式1:

<?php
$val="you-nick-name-2_yp52958122c7593";
echo substr($val,strpos($val,'_')-1,1); //2

方式2:

<?php
$val="you-nick-name-2_yp52958122c7593";
echo array_pop(explode('-',strstr($val,'_',true))); //2

答案 3 :(得分:1)

$val="you-nick-name-2_yp52958122c7593"; 
$first = strrpos($val,"-"); 
echo substr($val,$first+1,1);

答案 4 :(得分:1)

又一个例子:

$val="you-nick-name-24_yp52958122c7593";

$start = strrpos($val, '-') + 1;
$end = strpos($val, '_');

echo substr($val, $start , $end - $start );