简体   繁体   中英

php: parse string to get string

How would I extract the number 33 before the underscore in the following?

33_restoffilename.txt.

would something like following work?

int strPos = strpos("33_filename.txt", "_");
str num = substr ("33_filename.txt" , 0 , strPos );

If the naming convention is always number_filename.ext , you can use explode() :

//Put the filename into the variable $name
$name = "33_restoffilename.txt";

//Split the name by "_"
$parts = explode("_", $name);

//Get the first part of the name from the array (position 1)
$number = $parts[0];

//Output
echo $number;

This will output

33

there are may way to achive this:

Method 1:

$strPos = strpos("33_filename.txt", "_");
echo $num = substr("33_filename.txt" , 0 , $strPos );

Method 2:

$str = '33_filename.txt';
$str_arr = explode('_', $str);
echo $num = $str_arr[0];

Use strstr() .

$str = '33_filename.txt';
$num = strstr($str, '_', true);

Method - 1

$getIntegerFromBeginning = substr($string, 0, strspn($string, "0123456789"));
echo $getIntegerFromBeginning;

Method - 2

$getIntegerFromBeginning = explode("_", $string, 2);
echo  $getIntegerFromBeginning[0];

Replace $string with exact string.

Use this

$string = '33_filename.txt';

$arrString = explode('_', $string);

echo $value = $arrString[0]; //Will output 33

This is really very simple we don't need these string functions in this case. Just do type casting and you will get integer number. It will be fast and easy

$pp='33_restoffilename.txt';
echo (int)$pp;

No need to make it complicated

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM