Preg_match标识符

时间:2013-03-20 16:06:29

标签: php regex preg-match

感谢您对此问题的快速关注!非常感谢,感谢所有评论或提供见解的人!

嘿伙计我从我的标识符中得到一个匹配的问题

我有一个像这样的字符串{/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;
  }

5 个答案:

答案 0 :(得分:3)

你在正则表达式中缺少正斜杠:

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

或:

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

答案 1 :(得分:3)

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

print_r($match); // Array ( [0] => {/describe:foo} [1] => foo )

答案 2 :(得分:2)

$regexp = '#{/describe:([^}]+)}#i';
$query  = '{/describe:foo}'; 
preg_match($regexp, $query, $match);

print_r($match);

答案 3 :(得分:1)

用最简单的术语表示你可以使用:(?<=\/describe:).*(?=})

答案 4 :(得分:1)

尝试(/在描述之前看起来像失踪):

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