[development] preg_match bug or regex help needed?
Olivier Jacquet
ojacquet at jax.be
Mon Dec 31 00:56:34 UTC 2007
Well, the first thing that I spot is that the resulting regex wil have
two "+" at the end:
/(\s*([a-z][a-z0-9\-]*)\s*:\s*([a-z][a-z0-9\-]*)\s*;)++/i
Could that be it?
Doug Green wrote:
> I'm pretty good with regex, but I'm beating my head against the wall
> with this one, and wondering if there's a bug in php.
>
> Any help is much appreciated. (This is for nicedit.)
>
> <?php
> $text = 'style="font-style: italic; font-weight: bold;"';
> $regex = "(\s*([a-z][a-z0-9\-]*)\s*:\s*([a-z][a-z0-9\-]*)\s*;)+";
> if (preg_match('/'. $regex .'+/i', $text, $matches)) {
> print_r($matches);
> }
> ?>
>
> If the regex is confusing, just think of it simply as ((\w+):(\w+);)+
> ... with extra spaces and a definition for words that includes dashes.
>
> The regex vars $1 and $2 seem to only put the last matching value in the
> matches array.
>
> Array
> (
> [0] => font-style: italic; font-weight: bold;
> [1] => font-weight: bold;
> [2] => font-weight
> [3] => bold
> )
>
> I was hoping that it would also write font-style: italic into the matches.
>
> Thanks,
> Doug Green
>
>
>
More information about the development
mailing list