2011-07-30 5 views
0

私は、次のしている:括弧の中からコンテンツを取得する最良の方法は何ですか?(こんにちは)?

(ハロー) (がhello123) (がhello123 $ pecialChars &#@)

私は、括弧の間に内容を毎回取得する方法が必要です。それをする良い方法は何でしょうか?

+0

何を試しましたか? :) '('と ')'は正規表現では特殊なので、保護する必要があることに注意してください。 –

+0

私はこれを試しました - > $ items = preg_match_all( '#\ d +#'、$ string、$ matches); foreach($ $ itemsとして一致){エコー$ items}しかし、正規表現は整数だけを抽出することです。私の正規表現は吸うので、私は立ち往生しています。 – Fran

答えて

4

それぞれに空白がないので、次のパターンは\(([^ ]+)\)/(空白ではなく、かっこの間にあり、リテラル文字にエスケープされたものの1つ以上に一致します):

$data = "(hello) (hello123) (hello123$pecialChars&#@)"; 
preg_match_all('/\(([^ ]+)\)/', $data, $arr, PREG_PATTERN_ORDER); 

// print_r($arr) gives: 
Array 
(
    [0] => Array 
     (
      [0] => (hello) 
      [1] => (hello123) 
      [2] => (hello123$pecialChars&#@) 
     ) 

    [1] => Array 
     (
      [0] => hello 
      [1] => hello123 
      [2] => hello123$pecialChars&#@ 
     ) 

) 

編集:述べたように、パターン\(([^)]+)\)、またはmatch an open parenthesis followed by one or more characters that are not a close parenthesis and are followed by a close parenthesisは、(あなたがあなたのデータに閉じ括弧を持っている可能性がある場合や、スペースを持っている可能性がある場合に応じて)良いかもしれません。

+1

私は '[^)] +'自分自身を考えていますが、... –

+0

@pst私はそれが好きです!見た目が良くなり、意味があり、スペース以外のものに限定されず、まさに彼が望むものです。 –

関連する問題