2017-07-27 5 views
-2

マイ文字列:Geting 2試合

fields[name_1] 

私は正規表現を使用してfieldsname_1を取得したいです。

私はpreg_match_all()について知っていますが、私は正規表現の友達ではありません。

+1

正規表現の周りのような陳腐な質問は、アップ投票の回答をいくつかを取得します。何かが間違っています。 – revo

+3

https://stackoverflow.com/questions/8935717/php-regular-expression-string-from-inside-brackets – revo

答えて

3

これは直接試合のために使用することができます。

$string = 'fields[name_1]'; 

preg_match('/(.+)\[(.+)\]/', $string, $matches); 

print_r($matches); 

あなたが得る:

Array 
(
    [0] => fields[name_1] 
    [1] => fields 
    [2] => name_1 
) 

ので、$matches[1]$matches[2]はあなたが必要なものです。


まだ正確な必要性についてはっきりしていません。ここで


正規表現の説明です:

  1. https://regex101.com/r/PcJzQL/3
  2. http://www.phpliveregex.com/
  3. https://www.functions-online.com/preg_match.html
+0

thx。あなたが最初だったので、あなたの答えは真であるとマークされます。 –

+1

'*'の代わりに '+'を使いたいかもしれません。現在の正規表現は、両方のグループが空の単純な '[]'と一致します。 [ここをクリック](https://regex101.com/r/PcJzQL/2)私はあなたがグローバルフラグを使用していないことを知っていますが、文字列に一致がさらにあれば、数値記号にプラス記号を使用する方が安全です。 – Asunez

+0

@StanislavBelichenko - あなたは私の上記のコメントを考えたいかもしれません。 – Asunez

2

これだけのために無数の例がここにSOにあります。簡単な検索で必要なものが表示されます。とにかく、あなたが軌道に乗るために:

<?php 
$subject = 'fields[name_1]'; 
preg_match('/^(.+)\[(.+)]$/', $subject, $tokens); 
print_r($tokens); 

をその出力は明らかである:

Array 
(
    [0] => fields[name_1] 
    [1] => fields 
    [2] => name_1 
) 
+0

thx。私の英語はこのexaplesの正しい検索のためにあまりにも悪いです、申し訳ありません。 –

+1

@StanislavBelichenko次に、使いたいPHP関数の公式文書を読み始めます。彼らは質の高いものであり、参考になる例があり、多くの言語で翻訳されています:http://php.net/manual/en/function.preg-match.php – arkascha

+0

あなたは正しいです、私はそこにあるとは思わなかった同様の例です。 –