Craige Leeder schreef:
> Hey guys,
>
> I'm trying to write a regular expression to match a tag for my
> frameworks template engine. I seem to be having some trouble. The
> expression should match:
>
> {:seg 'segname':}
> {:seg 'segname' cache:}
>
> What I have is...
>
> $fSegRegEx = "#\{:seg \'[a-z0-9\-\_]{3,}\'( cache)?:\}#i";
hth:
<?php
$fSegRegEx = "#(\{:seg )\'([a-z0-9\-\_]{3,})\'((?: cache)?:\})#i";
$str = <<<DATA
<html>
<body>
<h1>{:seg 'title':}</h1>
<h1>{:seg 'title' cache:}</h1>
</body>
</html>
DATA;
preg_match_all($fSegRegEx, $str, $faSegMatches, PREG_SET_ORDER);
print_r($faSegMatches);
?>
OUTPUTS:
Array
(
[0] => Array
(
[0] => {:seg 'title':}
[1] => {:seg
[2] => title
[3] => :}
)
[1] => Array
(
[0] => {:seg 'title' cache:}
[1] => {:seg
[2] => title
[3] => cache:}
)
)
>
> Which when run against my test data, seems to match:
>
> "{:seg 'segname' cache:}"
> " cache"
>
>
>
>
>
> For arguments sake, I'll provide the whole code snippet...
>
> preg_match($fSegRegEx, $this->msOpCont, $faSegMatches);
>
> /* faSegMatches ==
>
> * array
>
> * 0 => '{:seg 'users_online' cache:}'//
>
> * 1 => ' cache'//
>
> */
>
> while ( $fMatch = current($faSegMatches) ) {
>
> /*
> * Expected:
>
> * $fMatch[0] = "{:seg "
>
> * $fMatch[1] = Segment Name
>
> *
> * $fMatch[2] = " cache:}"
>
> * or
>
> * $fMatch[2] = " :}"
>
> */
>
> $faMatch = explode("'", $fMatch);
>
> //...
>
> //...
>
> next($faSegMatches);
>
> }// End While
>
>
> Thanks guys. This has been bugging me for a couple days.
> - Craige
>
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php