たとえば、phpコマンドを実行することは可能strtolower()
ですpreg_replace()
か?
配列の一部のみを小文字、残りを大文字にしたいと思います。問題は、文字が動的に変化し、固定されていないことです。1 つの単語だけが同じままですが、残りは変わりません。
例:
arraypart1 (大文字のままにする必要があります) (定数語)+arraypart2 (両方とも小文字に変更する必要があります)
arraypart2 も文字数のサイズが変化しています。
たとえば、phpコマンドを実行することは可能strtolower()
ですpreg_replace()
か?
配列の一部のみを小文字、残りを大文字にしたいと思います。問題は、文字が動的に変化し、固定されていないことです。1 つの単語だけが同じままですが、残りは変わりません。
例:
arraypart1 (大文字のままにする必要があります) (定数語)+arraypart2 (両方とも小文字に変更する必要があります)
arraypart2 も文字数のサイズが変化しています。
あなたが何をしたいのかは100%明確ではありませんが、次のように思います:文字列から単語を抽出し、配列の1つに存在するものに応じて、それらの一部を小文字/大文字にします。preg_replace_callback
が手伝う。
PHP 5.3 以降:
$initial = "Mary had a little lamb";
$toupper = array("Mary", "lamb");
$tolower = array("had", "any");
$out = preg_replace_callback(
"/\b(?P<word>\w+)\b/", // for every found word
function($matches) use ($toupper, $tolower) { // call this function
if (in_array($toupper, $matches['word'])) // is this word in toupper array?
return strtoupper($matches['word']);
if (in_array($tolower, $matches['word'])) // is this word in tolower array?
return strtolower($matches['word']);
// ... any other logic
return $matches['word']; // if nothing was returned before, return original word
},
$initial);
print $out; // "MARY had a little LAMB"
考慮する必要がある他の配列がある場合は、それらをuse
ステートメントに入れて、無名関数内で使用できるようにします。
PHP >= 4.0.5:
$initial = "Mary had a little lamb";
$toupper = array("Mary", "lamb");
$tolower = array("had", "any");
function replace_callback($matches) {
global $tolower, $toupper;
if (in_array($toupper, $matches['word'])) // is this word in toupper array?
return strtoupper($matches['word']);
if (in_array($tolower, $matches['word'])) // is this word in tolower array?
return strtolower($matches['word']);
// ... any other logic
return $matches['word']; // if nothing was returned before, return original word
}
$out = preg_replace_callback(
"/\b(?P<word>\w+)\b/", // for every found word
'replace_callback', // call this function
$initial);
print $out; // "MARY had a little LAMB"
ご覧のとおり、大きな変更はありません。無名関数を名前付き関数に置き換えただけです。他の文字列配列を提供するには、global
キーワードでそれらを参照してください。
私はあなたを正しく理解していることを願っています ,preg_replace
は関数であり、他のすべての関数と同様に実行できます:
preg_replace(strtolower($val),$pattern,$someString);
preg_replace
の小文字バージョンで呼び出されます$val