PHP で次のようになる関数 replaceMe() を作成するにはどうすればよいですか。
$str = 'This is a very long string';
の中へ:
'This is a very long STRING?'
誰かが私を助けることができますか?
行末に固定された正規表現の置換を行いたいようです。使用preg_replace
:
$str = 'This is a very long string';
# This is a very long LINE
echo preg_replace("/string$/", "LINE", $str);
一般的なケースでは、置換文字列の代わりにコールバックを提供し、一致した部分文字列を単純に大文字にすることができますpreg_replace_callback
:
$str = 'This is a very long blah';
function word_to_upper($match) {
return strtoupper($match[1]);
}
# This is a very long BLAH
echo preg_replace_callback("/(\w+)$/", "word_to_upper", $str);
PHP 5.4 以降を使用している場合は、コールバックを無名関数として指定できます。
echo preg_replace_callback("/(\w+)$/", function ($match) {
return strtoupper($match[1])
}, $str);
これは機能します:
$str = 'This is a very long string';
echo $str."<br/>";
function replaceMe($str = "")
{
$words = explode(" ",$str);
$totalwords = count($words)-1;
$lastword = $words[$totalwords];
$words[$totalwords] = strtoupper($lastword);
$str = implode(" ",$words);
return $str;
}
echo replaceMe($str);
?>
出力:
これは非常に長い文字列
です これは非常に長いSTRINGです
$str = 'This is a very long string.';
function lastWordUpper($str){
$temp = strrev($str);
$last = explode(" ", $temp, 2);
return strrev(strtoupper($last[0]). ' ' .$last[1]) ;
}
echo lastWordUpper($str);