Re: [DONE] Substr by words

From: Date: Sat, 29 Oct 2005 15:51:50 +0000
Subject: Re: [DONE] Substr by words
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-224808@lists.php.net to get a copy of this message
Good job! However, let me give a few suggestions to optimize the code function trim_text($text, $count) { $text = str_replace(" ", " ", $text); /* * This is redundant; you are replacing all " " in $text with " " * maybe you meant * $text = trim($text); ? */ $string = explode(" ", $text); /* * For better programming practice, you should initialize $trimed * I believe if you turn on error_reporting for all in php.ini * PHP will display all warnings and errors. */ for ( $wordCounter = 0; $wordCounter <= $count;wordCounter++ ) /* * Typo - you forgot the $ for wordCounter++ * * for ( $wordCounter = 0; $wordCounter <= $count; $wordCounter++) */ { $trimed .= $string[$wordCounter]; if ( $wordCounter < $count ) { $trimed .= " "; } else { $trimed .= "..."; } } $trimed = trim($trimed); return $trimed; } This is purely my suggestion... and I'm not saying it is better... but if I were you, I'd do it this way : function trim_text($text, $count) { $text = trim($text); $string = explode(" ", $text); $trimed=''; for ( $wordCounter = 0; $wordCounter <= $count; $wordCounter++ ) { $trimed .= $string[$wordCounter].' '; } $trimed = trim($trimed); if (count($string)>$count) $trimed.='...'; return $trimed; } The only difference(not that you'd notice in a lightweight routine like this) is that, I don't have that if-else block inside the loop. Danny wrote:
Finally i found it (Google is god, you only have to ask the right question) function trim_text($text, $count){ $text = str_replace(" ", " ", $text); $string = explode(" ", $text); for ( $wordCounter = 0; $wordCounter <= $count;wordCounter++ ){ $trimed .= $string[$wordCounter]; if ( $wordCounter < $count ){ $trimed .= " "; } else { $trimed .= "..."; } } $trimed = trim($trimed); return $trimed; } Usage ------------------------------------------------ $string = "one two three four"; echo trim_text($string, 3); ---------- Forwarded message ---------- From: Danny <metalito@gmail.com> Date: Oct 29, 2005 1:36 PM Subject: Substr by words To: php-general@lists.php.net Hi, I need to extract 50 words more or less from a description field. How can i do that?. Substr, cuts the words. Is there any other way to that, without using and array? I mean and implemented function in PHP 4.x I´ve been googling around, but wordwrap, and substr is driving me mad... Thanks in advance Best Regards -- dpc -- dpc


« previous php.general (#224808) next »