$val="you-nick-name-2_yp52958122c7593";
现在我只希望在下划线之前使用此字符串中的2,为此我尝试通过替换字符串并执行类似这样的操作:
$first = strrpos($val,"-");
echo substr($val,$first+1)."<br>";
//output
2_yp52958122c7593
但我想从这个字符串中只想2,并希望在_之后减去所有字符串。 谢谢你的帮助。
答案 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)
有很多可能做到这一点..
<?php
$val="you-nick-name-2_yp52958122c7593";
echo substr($val,strpos($val,'_')-1,1); //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 );