2016-12-12 16 views
0

私は配列を持っているので、キーの後ろに '-main'があるかどうかチェックしたい。配列キーに値が含まれているかどうかを確認しますか?

foreach ($data as $key => $value) { 
    if (substr($key, -5) == '-main'){ 
     .... 
    } 
} 

「-main」がある場合は、「-main」の前にテキストを取得します。私は:

$myVar = substr($key, 0, -5); 

私は2つのサブ文字列を行う必要はありませんので、キーを分割するより効率的な方法はありますか? 多分私は '-main'を使いたくないかもしれませんし、別の長さの検索項目を、おそらく変数として使いたいと思っています。私は-5を指定するのではなく文字カウントを行う必要があります。文字カウントをせずに変数を組み込む方法はありますか?

答えて

0

正規表現検索(http://php.net/manual/de/function.preg-match.php)を使用して、タスクを実行できます。

if (preg_match('/^(.*)(-main)$/', $key, $hit)) { 
    $myVar = $hit[1]; 
    // explanation: 
    // $hit[0] will contain the whole result string 
    // $hit[1] will contain the part before "-main" 
    // $hit[2] will be "-main" 
} 

正規表現は以下の通りです:

  • /.../- >するpreg_matchでrequiered
  • ^- >文字列の先頭(私たちは、最初の位置で起動したい
  • (-main) - >使用している検索テキスト
  • $ - >文字列の末尾(文字列の中央に-mainは一致しません)
  • (。*)最初と " - "の間の文字列内の他のもの - 小括弧は$ヒットの一部として返されることを意味します。

検索するテキストを切り替えるとある文字は正規表現で特別な意味を持つことを覚えておいてください。だからあなたはそれらをエスケープする必要があります。

関連する問題