我试图在PHP字符串中 space / alpha 之前获取所有数字。
示例:
<?php
//string
$firstStr = '12 Car';
$secondStr = '412 8all';
$thirdStr = '100Pen';
//result I need
firstStr = 12
SecondStr = 412
thirdStr = 100
如何才能获得上述示例中的所有字符串数量?
我想要获得第一个 Alpha 的位置,然后在该位置之前获取所有数字。 我已经使用
成功获得了这个职位preg_match('~[a-z]~i', $value, $match, PREG_OFFSET_CAPTURE);
但是我还没有完成定位之前的数字。
Anyhelp将不胜感激。
答案 0 :(得分:3)
您不需要将正则表达式用于字符串,例如您已经显示的示例,或者根本不需要任何函数。您可以将它们转换为整数。
$number = (int) $firstStr; // etc.
The PHP rules for string conversion to number会为您处理。
但是,由于这些规则,还有一些其他类型的字符串,这不会起作用。例如,'-12 Car'
或'412e2 8all'
。
如果您使用正则表达式,请务必使用^
将其锚定到字符串的开头,否则它将匹配字符串中任何位置的数字,就像其他正则表达式的答案一样。
preg_match('/^\d+/', $string, $match);
$number = $match[0] ?? '';
答案 1 :(得分:1)
这是一种非常强硬的方法,适用于大多数情况:
$s = "1001BigHairyCamels";
$n = intval($s);
$my_number = str_replace($n, '', $s);
答案 2 :(得分:1)
$input = '100Pen';
if (preg_match('~(\d+)[ a-zA-Z]~', $input, $m)) {
echo $m[1];
}
答案 3 :(得分:1)
这个功能可以完成这项工作!
<?php
function getInt($str){
preg_match_all('!\d+!', $str, $matches);
return $matches[0][0];
}
$firstStr = '12 Car';
$secondStr = '412 8all';
$thirdStr = '100Pen';
echo 'firstStr = '.getInt($firstStr).'<br>';
echo 'secondStr = '.getInt($secondStr).'<br>';
echo 'thirdStr = '.getInt($thirdStr);
?>