ac39 PHP ereg() - Writing PHP
Training, Open Source computer languages
PerlPHPPythonMySQLApache / TomcatTclRubyJavaC and C++LinuxCSS 
Search for:
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
PHP ereg()

Posted by jarudin (jarudin), 25 April 2004
I made a script to convert a BBcode like system into normal HTML (see code below)

The only problem is that repetion of the same code (like in the string I inputted in the script the script will take the first b and very last /b and convert those to <b> and </b>. Which means the 'count' is greedy. I found a way around it, but cant seem to implemtent it.

http://www.wellho.net/regex/php.html

'Add a ? after any count to turn it sparse (match as few as possible) rather than have it default to greedy'

I dont understand where to put the '?'

I'va already tried working around the '?' but that only made it worse.

Code:
<?

$message = "[b]bold[/b] not bold [b]bold[/b]";
echo $message."<br>";

$arr  = array ("b","u","i","li","list");
$arr2 = array ("b","u","i","li","uol");

for ($i = 0 ; $i < count($arr);$i++){
 $message = ereg_replace("\[$arr[$i]\](.*)\[\/$arr[$i]\]","<$arr2[$i]>\\1</$arr2[$i]>", $message);
}

echo $message;
?>


Thanks,
--Jarudin

Posted by admin (Graham Ellis), 26 April 2004
The short answer is that the ? goes straight after the regular count operator. Thus:
+   one or more (as many as possible)
+? one or moer (as few as possible)
{2,6}  from 2 to 6, as many as possible
{2,6}? from 2 to 6, as few as possible
and so on.

You have things line +?, *?, ??, {3,}? and {4,6}? .....



This page is a thread posted to the opentalk forum at www.opentalk.org.uk and archived here for reference. To jump to the archive index please follow this link.

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2013: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 899360 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho
0