tags:

views:

38

answers:

1

I need to use a regex pattern , but what is the right php "decode" . my pattern is "similar" to BBcode i.e. ['something'] the 'something' could be "any length" but realistically I doubt not more than 10 chars/numbers. What is the correct php syntax to "unscrambe" i.e.

if ($row->xyz =['something'] ): 
   do this 
else: 
   do that 
endif;

Thanks in advance

A: 

A basic regexp to match BBCode style tags would look something like this:

preg_match('/\[[\/]?[A-Za-z0-9]+\]/', $row->xyz)

That will match anything that starts with a "[", ends with a "]", and has one or more alphanumeric characters in the middle (with an optional "/" for an end-tag.) Note it has flaws - for example, if you have a nested "[...]" in a larger "[...]", it will only grab the inner one. (i.e. [foo[bar]] will return only "[bar]".)

Example:

<?php 
    $regexp = '/\[[\/]?[A-Za-z0-9]+\]/';
    $testString = '[i]An italic string with some [b]bold[/b] text.[/i]';
    preg_match_all($regexp, $testString, $result);
    print_r($result);
?>

Result:

array(1) {
    [0]=> array(4) {
        [0]=> string(3) "[i]"
        [1]=> string(3) "[b]"
        [2]=> string(4) "[/b]"
        [3]=> string(4) "[/i]"
    }
}

Of course, I'm not sure this is what you actually mean you want to do, but it is what you say you want to do. Are you sure you want to find BBCodes, rather than find strings that are wrapped in them?

Stephen
You're right ;)
Michael Robinson
Actualy Stephen finding the "wrapped string" would be interesting also but you answered the question - thanks