7

これは本当に単純な問題ですが、どこにも解決策が見つかりませんでした。

preg_matchまたはpreg_match_allを使用して、括弧内から文字列を取得しようとしていますが、括弧はありません

これまでのところ、私の表現は次のようになっています。

\([A-Za-z0-9 ]+\)

そして、次の結果を返します。

3(中空のハイライト)928-129(<-元の文字列)

(中空のハイライト)(<-結果)

私が欲しいのは括弧内の文字列ですが、括弧なしです。次のようになります。

中空のハイライト

後で括弧をstr_replaceなどに置き換えることもできますが、それは私にとってあまりエレガントな解決策ではないようです。

結果に括弧が含まれないように、何を追加する必要がありますか?

あなたの助けをありがとう、あなたたちは素晴らしいです!:)

4

2 に答える 2

24

試す:

preg_match('/\((.*?)\)/', $s, $a);

出力:

Array
(
    [0] => (hollow highlight)
    [1] => hollow highlight
)
于 2012-06-28T16:59:38.083 に答える
16

エスケープされた括弧に加えて、キャプチャ括弧を追加する必要があります。

<?php
    $in = "hello (world), my name (is andrew) and my number is (845) 235-0184";
    preg_match_all('/\(([A-Za-z0-9 ]+?)\)/', $in, $out);
    print_r($out[1]);
?>

これは以下を出力します:

Array ( [0] => world [1] => is andrew [2] => 845 ) 
于 2012-06-28T17:44:18.820 に答える