0

たとえば、phpコマンドを実行することは可能strtolower()ですpreg_replace()か?

配列の一部のみを小文字、残りを大文字にしたいと思います。問題は、文字が動的に変化し、固定されていないことです。1 つの単語だけが同じままですが、残りは変わりません。


例:
arraypart1 (大文字のままにする必要があります) (定数語)+arraypart2 (両方とも小文字に変更する必要があります)

arraypart2 も文字数のサイズが変化しています。

4

2 に答える 2

0

あなたが何をしたいのかは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キーワードでそれらを参照してください。

于 2012-07-22T17:22:57.483 に答える
-1

私はあなたを正しく理解していることを願っています ,preg_replaceは関数であり、他のすべての関数と同様に実行できます:

preg_replace(strtolower($val),$pattern,$someString);

preg_replaceの小文字バージョンで呼び出されます$val

于 2012-07-22T10:26:49.697 に答える