Skip to content
Advertisement

Preg_match identifier

I want ot get a match from my identifier.

I have a string like this coming in {/describe:foo} where I am trying to match {/describe:} to return foo, but am not getting the regex right, would someone mind pointing out what I did wrong? here’s my match.

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

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

Background I hope this can help others, a good reason to do this is to create replaceable control words in a string that can be interpreted and replaced, here’s an example of a RESTful poster that will run a descriptor on a control word.

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

Advertisement

Answer

You are missing the forward slash in your regexp:

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

or:

$regexp = '#{/describe:(.*?)}#i';
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement