2

PHP で次のようになる関数 replaceMe() を作成するにはどうすればよいですか。

$str = 'This is a very long string';

の中へ:

'This is a very long STRING?'

誰かが私を助けることができますか?

4

3 に答える 3

4

行末に固定された正規表現の置換を行いたいようです。使用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);
于 2012-08-14T19:43:45.173 に答える
3

これは機能します:

$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です

于 2012-08-14T19:46:35.203 に答える
-1
$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);
于 2012-08-14T20:45:30.700 に答える