如何检查字符串是否以数字结尾,如果为true,则将数字推送到数组(例如)?我知道如何检查字符串是否以数字结尾,我解决了这个问题:
$mystring = "t123";
$ret = preg_match("/t[0-9+]/", $mystring);
if ($ret == true)
{
echo "preg_match <br>";
//Now get the number
}
else
{
echo "no match <br>";
}
我们假设所有字符串都以字母t
开头,并且与一个数字合成,例如t1
,t224
,t353253
...
但是,如果有这个号码怎么能减少呢?在我的代码示例中,字符串末尾有123
,如何将其剪切掉,例如将其推送到array_push
的数组?
答案 0 :(得分:2)
首先,你的正则表达式有点不对(可能是一个错字) - 但要回答你的问题,你可以使用lookbehind和match数组,如下所示:
velocity = velocity + acceleration * dt
答案 1 :(得分:2)
$number = preg_replace("/^t(\d+)$/", "$1", $mystring);
if (is_numeric($number)) {
//push
}
这应该给你尾随的数字。只需检查它是否为数字,将其推送到数组
修改强>
只是意识到这不适用于像t123t225
这样的字符串。如果您需要支持此案例,请改用此模式:/^t.*?(\d+)$/
。这意味着它会尝试使用数字捕获任何结尾,忽略t
和数字之间的所有内容,并且必须以t
开头。
答案 2 :(得分:1)
您应该使用preg_match中的第3个参数来获取匹配项,并且应该有数字并更改您的正则表达式:([0-9]+)
所以代码应如下所示:
$mystring = "t123";
$ret = preg_match("/([0-9]+)/", $mystring, $matches);
if ($ret == true)
{
print_r($matches); //here you will have an array of matches. get last one if you want last number from array.
echo "prag_match <br>";
}
else
{
echo "no match <br>";
}
答案 3 :(得分:1)
在preg_match
函数中再添加一个参数,我想建议其他一些正则表达式来获取任何字符串的最后一个数字。
$array = array();
$mystring = "t123";
$ret = preg_match("#(\d+)$#", $mystring, $matches);
array_push($array, $matches[0]);
$mystring = "t58658";
$ret = preg_match("#(\d+)$#", $mystring, $matches);
array_push($array, $matches[0]);
$mystring = "this is test string 85";
$ret = preg_match("#(\d+)$#", $mystring, $matches);
array_push($array, $matches[0]);
print_r($array);
<强>输出强>
Array
(
[0] => 123
[1] => 58658
[2] => 85
)