Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP删除带有可变数字的字符串的值_Php_String - Fatal编程技术网

PHP删除带有可变数字的字符串的值

PHP删除带有可变数字的字符串的值,php,string,Php,String,基本上,我从数据库中获取的数据格式类似于项目名称101,现在可能会继续增加,所以最终可能是项目名称1001。我的问题是,我如何删掉数字,只获取项目名称。我曾考虑过使用substr,但因为我不知道长度,所以我真的不能这样做。由于数字不同,我认为我不能使用str_replace有什么办法可以做到这一点吗?听起来您的数据库方案似乎有点不对劲。您可能应该尝试重构/规范化您的方案 但同时,您可以使用来修剪右侧的所有数字 $val = rtrim($val, '0123456789'); 示例 Input

基本上,我从数据库中获取的数据格式类似于项目名称101,现在可能会继续增加,所以最终可能是项目名称1001。我的问题是,我如何删掉数字,只获取项目名称。我曾考虑过使用substr,但因为我不知道长度,所以我真的不能这样做。由于数字不同,我认为我不能使用str_replace有什么办法可以做到这一点吗?

听起来您的数据库方案似乎有点不对劲。您可能应该尝试重构/规范化您的方案

但同时,您可以使用来修剪右侧的所有数字

$val = rtrim($val, '0123456789');
示例

Input               Output
nameofproject1001   nameofproject
nameofproject       nameofproject
n4me0fproj3ct1001   n4me0fproj3ct

听起来您的数据库方案似乎有些不对劲。您可能应该尝试重构/规范化您的方案

但同时,您可以使用来修剪右侧的所有数字

$val = rtrim($val, '0123456789');
示例

Input               Output
nameofproject1001   nameofproject
nameofproject       nameofproject
n4me0fproj3ct1001   n4me0fproj3ct

对于像
project12V123
这样的字符串,最好这样做

$text = `project12V123`;
$text = preg_replace('/([\w]+)([^0-9])([0-9])+$/', '$1$2', $text);
将返回:

Project12V
或者使用
rtrim

$text = rtrim($text,'0123456789'); 

对于像
project12V123
这样的字符串,最好这样做

$text = `project12V123`;
$text = preg_replace('/([\w]+)([^0-9])([0-9])+$/', '$1$2', $text);
将返回:

Project12V
或者使用
rtrim

$text = rtrim($text,'0123456789'); 

您绝对应该使用正则表达式:

$fullname = "nameofproject101";
preg_match("/([a-z]+)([0-9]+)/i", $fullname, $matches);
$name   = $matches[1];
$number = $matches[2];
echo "'$fullname' is '$name' followed by '$number'";

您绝对应该使用正则表达式:

$fullname = "nameofproject101";
preg_match("/([a-z]+)([0-9]+)/i", $fullname, $matches);
$name   = $matches[1];
$number = $matches[2];
echo "'$fullname' is '$name' followed by '$number'";

使用正则表达式去除尾随数字。项目名称本身是否包含数字?@erisco从数据库中可以看出,它的存储方式类似于“项目名称101”,我需要它是“项目名称”,但我需要对数据做的是,我不需要数字,所以我需要将其去掉。@atrljoe我相信erisco是在问名称(没有尾随数字)是否可以包含数字。例如r2d2translator1001。使用正则表达式去除尾随数字。项目名称本身是否包含数字?@erisco从数据库中可以看出,它的存储方式类似于“项目名称101”,我需要它是“项目名称”,但我需要对数据做的是,我不需要数字,所以我需要将其去掉。@atrljoe我相信erisco是在问名称(没有尾随数字)是否可以包含数字。例如,r2d2translator1001。@Kristian,这正是我想要暗示的上述操作将把
R2D2Translator 1001
转换为
rdtranslator
。可能不是OP想要的。@Kristian这就是我暗示的。。)上述操作将把
R2D2Translator 1001
转换为
rdtranslator
。可能不是OP想要的。这将把
version2project101
变成
version
。OP可能需要
version2project
。这将把
version2project101
变成
version
。OP可能需要
version2project