|
Posted by Juliette on 11/09/06 03:47
lawrence k wrote:
> Suppose I have these five lines in a file somewhere:
>
> <p>This entry should belong to:
> <select name="formInputs[id_of_neighborhood_to_which_this_belongs]">
> <option value="">(No choice made)</option>
> <?php getDatabaseTableValuesInOptionTags("neighborhoods", "id",
> "state"); ?>
> </select>
>
> Suppose I open this file and read the contents into a string called
> $string. Suppose I then give the string to this function:
>
>
> function matchAllPhpFunctionsInString($subject=false) {
> // 11-08-06 - this is being called in importForm
>
> $pattern = "<";
> $pattern .= "\?php.*\(.*\); \?";
> $pattern .= ">";
> $pattern = "/$pattern/";
> preg_match_all($pattern, $subject, $matches);
> // print_r($matches);
>
> // 09-19-06 - there is no point returning a 2 dimensional array, so we
> will make
> // it one dimensional.
> $arrayOfPhpFunctionNames = $matches[0];
> return $arrayOfPhpFunctionNames;
> }
>
>
>
> This function is suppose to find the PHP command. It works on other
> pages, but not the one I've posted above. Why is that? Why would this
> regular expression not find this PHP command?
>
In the pattern you ask for '; ?>', i.e. semi-colon-space-questionmark.
In the code snippet you provided, there is more than one space behind
the semi-colon, ergo: it is correct that the pattern does not match the
code snippet.
If more spaces are allowable, you can of course solve this by changing:
> $pattern .= "\?php.*\(.*\); \?";
to:
> $pattern .= "\?php.*\(.*\); +\?";
[Back to original message]
|