php - php - 如何在数字之间大写字母

我需要php字符串函数,它使两个数字之间的字母大写。 它应该在字符串末尾标识这些字符串。 因为使用 strtoupper() 使整个字符串大写,所以我卡住了。

例如:


Word word 24l95 needs to be Word word 24L95, 


Word 24h72 --> Word 24H72, 


Word word 2a3 --> Word word 2A3, 


Word 3b --> Word 3B etc.`



我不知道如何做这个,甚至怎样开始做这个函数。 如果有人比我更了解,我将不胜感激。

时间:

这对你有用吗?


$string = 'Word word 24l95 Word 24h72';



preg_match_all( '/d[a-zA-Z]+d/', $string, $matches );



foreach ( $matches[0] as $match ) {


 $string = str_replace( $match, strtoupper( $match ), $string );


}



var_dump( $string );



它使用 preg_match_all 来查找字符串的相关部分,然后使用 str_replacestrtoupper 来替换这些部分。

结果:


string(26)"Word word 24L95 Word 24H72"



编辑: 编辑 正规表达式 到 strtoupper的第一个字母( 根据评论) 。


$string = 'Word word 24h72 word 14d52 14ad52 14d 14ab';



preg_match_all( '/d[a-zA-Z]/', $string, $matches );



foreach ( $matches[0] as $match ) {


 $string = str_replace( $match, strtoupper( $match ), $string );


}



var_dump( $string );



结果:


string(42)"Word word 24H72 word 14D52 14Ad52 14D 14Ab"



php中内置的strtoupper() 函数。


$str = strtoupper($str);



这将使所有字母大写,不会影响数字。

你不必担心字母( 字符串) 字符是否在数字之间。

这个函数与数字无关。

编辑:

根据更新的问题,OP需要字符串中涉及的字母表。

你可以使用 preg_replace() 函数进行。


$words = '24h72';


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


echo '<pre>';print_r($words);echo '</pre>';



这里程序的快速手动运行


Input --> Output


24l95 --> l


24h72 --> H


2a3 --> A


3b --> B



工作代码,只查找字符串中的字母:

工作代码使所有字母大写大写:

...