0

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

1
  • 2
    What are some example strings? Commented Aug 15, 2010 at 8:56

1 Answer 1

1

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?

Sign up to request clarification or add additional context in comments.

1 Comment

Actualy Stephen finding the "wrapped string" would be interesting also but you answered the question - thanks

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.