Re: [DONE] Substr by words
| From: | Minuk Choi | 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