From e1bec7946576bbab01b836e0d5e531091cebb19e Mon Sep 17 00:00:00 2001 From: messju Date: Tue, 18 Mar 2003 00:26:46 +0000 Subject: [PATCH] fixed greedy str_replace in outputfilter.trimwhitespace.php --- libs/plugins/outputfilter.trimwhitespace.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/libs/plugins/outputfilter.trimwhitespace.php b/libs/plugins/outputfilter.trimwhitespace.php index d4eddf94..4e9899d3 100644 --- a/libs/plugins/outputfilter.trimwhitespace.php +++ b/libs/plugins/outputfilter.trimwhitespace.php @@ -44,17 +44,26 @@ // replace script blocks foreach($_script_blocks as $curr_block) { - $source = str_replace("@@@SMARTY:TRIM:SCRIPT@@@",$curr_block, $source); + smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:SCRIPT@@@",$curr_block, $source); } // replace pre blocks foreach($_pre_blocks as $curr_block) { - $source = str_replace("@@@SMARTY:TRIM:PRE@@@",$curr_block, $source); + smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:PRE@@@",$curr_block, $source); } // replace textarea blocks foreach($_textarea_blocks as $curr_block) { - $source = str_replace("@@@SMARTY:TRIM:TEXTAREA@@@",$curr_block, $source); + smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:TEXTAREA@@@",$curr_block, $source); } return $source; } + +function smarty_outputfilter_trimwhitespace_replace($search, $replace, &$subject) { + if (($_pos=strpos($subject, $search))!==false) { + $subject = substr($subject, 0, $_pos) + . $replace + . substr($subject, $_pos+strlen($search)); + } +} + ?>