Работает ли это для вас?
$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 );
Результат:
string(42) "Word word 24H72 word 14D52 14Ad52 14D 14Ab"