我需要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.`
我不知道如何执行此操作,甚至不知道如何开始执行此功能。如果有人比我更了解,将不胜感激。
很抱歉我提出的问题这么差。
谢谢。
答案 0 :(得分:2)
使用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
答案 1 :(得分:2)
答案 2 :(得分:2)
您可以使用strtoupper()
,它是内置的php函数。它仅将字母转换为大写。
从文档中,
返回所有已转换为大写字母的字符串。
答案 3 :(得分:1)
这对您有用吗?
client_id=<client_id>&
scope=https://graph.microsoft.com/.default&
grant_type=client_credentials&
client_secret=<client_secret>
它使用$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_replace
替换这些部分。
结果:
strtoupper
编辑:将正则表达式编辑为仅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 );
答案 4 :(得分:-1)
无论您要修改的是字符串还是字符串的数组,都只需要strtoupper()
和$
就可以了。这样,您就不会编写任何额外的循环或后续替换功能的脚本了。
它应该在字符串的末尾标识这些字符串。
好的,$strings = [
'Word word 24l95',
'Word 24h72',
'Word word 2a3',
'Word 3b'
];
var_export(
preg_replace_callback(
'~\d+[a-z]\d*$~',
function ($m) {
return strtoupper($m[0]);
},
$strings
)
);
元字符将确保字符串的结尾匹配。
我需要php字符串函数,使两个数字之间的字母大写。
好吧,您的最终样本字符串与该规则相矛盾。相反,似乎匹配必须以一个或多个数字开头,然后是小写字母,然后是零个或多个数字,直到字符串结尾。这是我在正则表达式模式中内置的逻辑。
代码:(Demo)
array (
0 => 'Word word 24L95',
1 => 'Word 24H72',
2 => 'Word word 2A3',
3 => 'Word 3B',
)
输出:
+
如果匹配子字符串的非数字部分可能包含多个字母,只需在[a-z]
之后添加|
。