如何在数字之间大写字母

时间:2019-04-12 04:35:38

标签: php regex

我需要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.`

我不知道如何执行此操作,甚至不知道如何开始执行此功能。如果有人比我更了解,将不胜感激。

很抱歉我提出的问题这么差。

谢谢。

5 个答案:

答案 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

Working code to find out alphabets only in strings:

Working Code to make all alphabets upper case:

答案 1 :(得分:2)

使用php内置函数strtoupper()

<?php
  echo strtoupper('24l95');

输出:-{https://3v4l.org/XqYvW

答案 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_allstr_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]之后添加|