Re: [DONE] Substr by words

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
Date: Oct 29, 2005 1:36 PM
Subject: Substr by words
To: php-general@xxxxxxxxxxxxx

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


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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux