PHP:只要字符串在一个或多个字母后包含数字,就添加连字符

PHP:只要字符串在一个或多个字母后包含数字,就添加连字符,php,Php,在我的数据库中,我有可以由用户以苹果MM1、香蕉B-234或卡尔Mm345的形式输入的项目名称(我真的无法控制用户输入的内容太多) 我希望能够使用PHP转换Carl Mm345并将其转换为Carl MM-345:基本上在破折号之前添加破折号或连字符和大写字母我不确定您到底想要什么,创建regex表达式可能更有效,但是这个PHP函数似乎可以实现您想要的功能。我概括了你在问题中给出的规则(还要注意,如果数字是大写的,strtoupper没有区别) 函数转换($string){ $tmp=爆炸(“”,

在我的数据库中,我有可以由用户以苹果MM1、香蕉B-234或卡尔Mm345的形式输入的项目名称(我真的无法控制用户输入的内容太多)


我希望能够使用PHP转换
Carl Mm345
并将其转换为
Carl MM-345
:基本上在破折号之前添加破折号或连字符和大写字母

我不确定您到底想要什么,创建
regex
表达式可能更有效,但是这个PHP函数似乎可以实现您想要的功能。我概括了你在问题中给出的规则(还要注意,如果数字是大写的,
strtoupper
没有区别)

函数转换($string){
$tmp=爆炸(“”,$string);
$t='';
$var=str_split($tmp[1]);
对于($i=0;$i
我不确定您到底想要什么,创建
regex
表达式可能更有效,但这个PHP函数似乎可以实现您想要的功能。我概括了你在问题中给出的规则(还要注意,如果数字是大写的,
strtoupper
没有区别)

函数转换($string){
$tmp=爆炸(“”,$string);
$t='';
$var=str_split($tmp[1]);
对于($i=0;$i
自己制作一个正则表达式并与
preg\u replace()
一起使用。据我所知,普通的preg\u replace不能大写字母,因此最好看看函数。如果您为诸如“a5b6c7”之类的字符串指定结果,我将提供详细的解决方案。请自己制作一个正则表达式,并与
preg\u replace()
一起使用。据我所知,普通preg\u replace不能大写字母,因此为了您的目的,最好查看函数。如果您为诸如“a5b6c7”之类的字符串指定结果,我将提供详细的解决方案。因此,输入的形式可以是
abc abd123
abd-123
abd-123
abd123
,因此输入的形式可以是
abc abd-123
abd-123
abd-123
function convert($string) {
    $tmp = explode(' ', $string);
    $t = '';
    $var = str_split($tmp[1]);
    for ($i = 0; $i < count($var); $i++) {
        if (is_numeric($var[$i])) {
            $t .= '-';
        }
        $t .= strtoupper($var[$i]);
    }
    return implode('', array($tmp[0])) . $t;
}
function convert_input($string) {
    $arr = explode(' ', $string);
    if (count($arr) == 1) {
        $first = '';
        $second = strtoupper($string);
    } else {
        $first = $arr[0].' ';
        $second = strtoupper($arr[1]);
    }
    $second = str_replace('-', '', $second);
    $p = strcspn($second, '0123456789');
    $letters = substr($second, 0, $p);
    $numbers = substr($second, $p);
    $glue = $letters && $numbers ? '-' : '';
    return $first.$letters.$glue.$numbers;
}

echo convert_input('mm234');
echo convert_input('Carl Mm345');
echo convert_input('adsf mmmm');
echo convert_input('adsf');
echo convert_input('adsfdsf 123');
echo convert_input('Banana B-234');