从变量

时间:2016-08-08 10:10:52

标签: php preg-match explode strpos

我的变量始终以一个或多个数字开头,并且需要脚本来确定此数字的结束位置,现在举例来说,变量可以如下所示:

1234 -hello1.jpg

1 hello1.gif

1234 hello1.gif

123456 hello1.gif

我想说的是爆炸功能不起作用,我的正则表达式很差,我只需要留下第一个数字并忽略字符串中的任何其他数字。我只需要留下粗体数字。

提前致谢...

8 个答案:

答案 0 :(得分:2)

$arr = str_split($str);
for($i = 0; $i < count($arr); ++$i){
   if(!is_numeric($arr[$i])){
       echo "Number ends at index: " . $i;
       break;
   }
}

如果您愿意,也可以使用$ arr [$ i]将数字放入数组中。 这可能比使用正则表达式更具可读性。

您可以添加逻辑以允许一个小数点,但从问题看来,您似乎只需要整数。

http://sandbox.onlinephpfunctions.com/code/fd21437e8c1502b56572a624cf6e4683cf483a8d - 工作代码示例

答案 1 :(得分:1)

彼得贝内特, 你可以这样试试。首先,将字符串( 1234-hello1.jpg)转换为数组。 那么你可以检查给定的数组元素是否为数字。

$str = "1234-hello1.jpg";       //given string
$count = strlen($str);          //count length of string
$num = array();

for($i=0; $i < $count; $i++)
{
    if(is_numeric($str[$i]))     //to check element is Number or Not
    {
        $num[] = $str[$i];       //if it's number, than add it to another array
    }
    else break;                  //if array element is not a number. exit **For** loop
}

$number = $num;                //See o/p
$number = implode("", $number);   
echo $number;                    // Now $number is String.

Out Put

 $num = Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
);


$number = "1234";   //string

所以最后你得到了你需要的字符串。

答案 2 :(得分:0)

我认为你可以用以下代码删除你的刺痛。

preg_replace('/[0-9]+/', '', $string);

此处$string是变量,您可以根据变量名称更改此名称。

答案 3 :(得分:0)

RegEx确实是要走的路:

function getVal($var){
    $retVal = '';

    if(preg_match('#^(\d+)#', $var, $aCapture)){  //Look for the digits
        $retVal = $aCapture[1];    //Use the digits captured in the brackets from the RegEx match
    }
    return $retVal;
}

这样做只是查找字符串开头的数字,将它们捕获到数组中,并使用我们想要的部分。

答案 4 :(得分:0)

preg_match('/^[0-9]+/', $yourString, $match);

现在,您可以检查$match是否为整数。

答案 5 :(得分:0)

如果您确定该数字是一个整数,在开始时始终存在,您可以使用sscanf

echo sscanf($val, '%d')[0];

答案 6 :(得分:0)

这是您需要的RegEx:

^.*\b([0-9]+)

我不知道你在写什么语言,所以请给你RegEx。它在Notepad ++中使用您的示例进行了测试。

答案 7 :(得分:0)

这是完整的工作脚本,感谢@ user1 ...

$str = "1234-hello1.jpg";
$arr = str_split($str);
for($i = 0; $i < count($arr); ++$i){
   if(!is_numeric($arr[$i])){
       //echo "Number ends at index: " . $i;       
       break;
  } else {
        $num[] = $str[$i];   
   }
}

$fullNumber = join("", $num);

echo $fullNumber;