At 01:59 13.11.2002, Gustaf Sjoberg said: --------------------[snip]-------------------- >hi, >i tried to implement the code, but it does not work if the string: > >a) doesnt contain any <pre>..</pre> >b) doesnt contain any <pre> >c) doesnt contain any </pre> >d) contains multiple <pre>..</pre>'s > >so i altered it a little and this is what i came up with:
Here's my original function, now tested and bugs removed, together with some comments: function remove_br_in_pre($string) { $re1 = '/(.*?)<pre>(.*?)<\/pre>(.*)/is'; $re2 = '/<br>\n?/is'; // setting a variable to "null" defines it, so we don't get // a warning for an undefined variable at the first concatenation. // unset($result) doesn't define it, and is unnecessary // as it is not "set" at this moment. $result = null; // this generates a loop that will remove multiple pre's while ($string) { // my original assignment ($arMatch = preg_match(...)) was wrong. // preg_match returns 1 on match, and 0 on no match. if (preg_match($re1, $string, $arMatch)) { $result .= $arMatch[1]; // sorry, forgot to keep the <pre></pre> pairs... // you need to add a line break instead of the <br> // to keep your code formatted $result .= '<pre>'.preg_replace($re2, "\n", $arMatch[2]).'</pre>'; $string = $arMatch[3]; } else break; } // if there are no <pre></pre> pairs, $string will be unmodified and the // loop will immediately break out at the first attempt. This appends // either the whole $string, or the remaining $string, to the result. $result .= $string; return $result; } >now, i've tried it in a few different scenarios and it seems to be working, >although the function might be redundant and far from pretty - it gets the >job done. however, i have a question; what does the "is" in //is denote? ;-) >(doesnt it feel great to have code sniplets you have no idea what they do in >your scripts? ;-)) The regex modifiers: i - make that case independent, so <pre>, <PRE>, and others are matched s - treat the input as a single line, don't stop at a newline >also, do you see any direct "bugs slash features" in the current function? Not that I'd be aware of... >thanks in anticipation, You're most welcome :) -- >O Ernest E. Vogelsinger (\) ICQ #13394035 ^ http://www.vogelsinger.at/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php