2011-12-26 10 views
2

変数の引用符の中にテキストを入れるだけの機能がありますか?
ただ好き:引用符でテキストを取得

$text = 'I am "pro"'; 
echo just_text_in_quotes($text); 

を、私はこの機能が存在しないことを知っている..しかし、私はそのようなものが必要。 私は考えていたfnmatch("*",$text) しかし、これはちょうどそのテキストをエコー、それはちょうどチェックのためです。 私を助けてもらえますか? ありがとうございます。

答えて

6

この関数は、最初に一致したテキストを引用符で囲みます(空の文字列も可)。

function just_text_in_quotes($str) { 
    preg_match('/"(.*?)"/', $str, $matches); 
    return isset($matches[1]) ? $matches[1] : FALSE; 
} 

あなたはすべてのマッチの配列を返すように、それを修正することができますが、あなたの例では、あなたがその戻り値をINGのechoのコンテキスト内でそれを使用。配列を返さなければならないのは、Arrayです。

複数のオカレンスとカスタム区切り文字を処理できるより汎用的な関数を作成する方がよい場合があります。

function get_delimited($str, $delimiter='"') { 
    $escapedDelimiter = preg_quote($delimiter, '/'); 
    if (preg_match_all('/' . $escapedDelimiter . '(.*?)' . $escapedDelimiter . '/s', $str, $matches)) { 
     return $matches[1]; 
    } 
} 

これは、一致するものが見つからない場合、nullを返します。

+0

は私が必要なものだったこと、ありがとうございます。 まあ、私は正規表現を使ったことはありませんでしたが、私はそれが私のプロジェクトでたくさん必要になると思われます... 私はできるだけ早く受け入れます。 –

2

preg_matchはこの

preg_match('/"(.*?)"/', $str, $quoted_string); 
    echo "<pre>"; print_r($quoted_string); 
    //return array of all quoted words in $str 
1

この正規表現のために作られている:あなたがここに見ることができるよう

"(\w*)" 

がお手伝いします:http://rubular.com/r/3kgH7NdtLm