4

私は自分の識別子から一致を得たいと思っています。

return{/describe:foo}に一致させようとしているところにこのような文字列が入ってきましたが、正規表現を正しく取得していません。誰かが私が間違っていたことを指摘していただけますか? これが私の試合です。{/describe:}foo

$regexp = '/\{describe:(.*?)\}/i';
$query  = '{/describe:foo}'; 
preg_match($regexp, $query, $match);

print_r($match); // (bool) false

背景 これが他の人に役立つことを願っています。これを行う正当な理由は、解釈および置換できる文字列に置換可能な制御語を作成することです。制御語で記述子を実行する RESTful ポスターの例を次に示します。

  if (preg_match('/\{describe:(.*?)\}/i', $_POST['query'], $match))
  {
        // Describe Salesforce Object from internal POST tool
        print_r($SforceConnection->describeSObjects($match[1]));
        exit;
  }
4

5 に答える 5

3

正規表現にスラッシュがありません:

$regexp = '/\{\/describe:(.*?)\}/i';

また:

$regexp = '#\{/describe:(.*?)\}#i';
于 2013-03-20T16:08:11.393 に答える
3
$regexp = '/\{\/describe\:(.*?)\}/i';
$query  = '{/describe:foo}';
preg_match($regexp, $query, $match);

print_r($match); // Array ( [0] => {/describe:foo} [1] => foo )
于 2013-03-20T16:08:24.387 に答える
2
$regexp = '#{/describe:([^}]+)}#i';
$query  = '{/describe:foo}'; 
preg_match($regexp, $query, $match);

print_r($match);
于 2013-03-20T16:09:49.707 に答える
1

最も簡単に言えば、これを使用できます:(?<=\/describe:).*(?=})

于 2013-03-20T16:08:12.650 に答える
1

試してください(/説明する前に行方不明のように見えます):

$regexp = '/\{/describe:(.*?)\}/i'
于 2013-03-20T16:08:47.273 に答える