Ah, very nice Ernest. thanks a lot.

the nice thing is that i read and understood the regexp so i got a great deal out of 
having this problem ;-)

cheers,
GS

On Wed, 13 Nov 2002 08:28:30 +0100
[EMAIL PROTECTED] (Ernest E Vogelsinger) wrote:

>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/
>
>


-- 
Gustaf Sjoberg <[EMAIL PROTECTED]>
 <(" <) <(" )> <( ")> (> ")> 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to