Re: Re[2]: [PHP] Divide into words

2002-12-16 Thread 1LT John W. Holmes
> Yes, but my example was geared towards trying to work through a more
> generic scenario. I'll bet if you try using perl regex with callback
> it'll be even faster.

I'll take that bet and say using preg_*_callback will be slower. :) I'll try
and time each of them tonite and post what I find.

Something else to distract me from writing my column!

---John Holmes...


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




Re: Re[2]: [PHP] Divide into words

2002-12-16 Thread Marco Tabini
Yes, but my example was geared towards trying to work through a more
generic scenario. I'll bet if you try using perl regex with callback
it'll be even faster.


Marco
-- 

php|architect - The magazine for PHP Professionals
The monthly worldwide magazine dedicated to PHP programmers

Come visit us at http://www.phparch.com!

--- Begin Message ---
Hi!

I have dome almost the same

$input = 'Today is a very beautiful day and the sun is shining';

$output = array();
$words = explode(' ',$input);

$cur_pos = 0;
foreach($words as $word) {
if(!empty($output[$word])){
$output[$word] .= ','.$cur_pos;
} else {
$output[$word] = $cur_pos;
}
$cur_pos += strlen($word) + 1;
}
unset ($word);


but i thought if there is some better way. I also tried
Marco's example and adjust it a little bit to get the same
results. And here is some benchmark i have.

with this example i get  0.0024310350418091
and with Marco's i get 0.0034389495849609s

So using two array is faster anyway. Probably of explode
speed.

-- 
bye,
 Uros
Monday, December 16, 2002, 6:36:37 PM, you wrote:

>> For example i have some words:
>> 
>> Today is very beautiful day and sun is shining
>> 
>> What i want to get from this is array
>> 
>> words
>>  [Today] => 0
>>  [Is] => 6,30
>>  [Very] => 8
>>  [beautiful] => 12
>>  ..
>> 
>> Can somebody please help me with this. Those nubers are
>> position of special word in above sentence. If word repeates
>> i want to have both positions saved in same row like word is.
>> 
>> I tried something but i think it's to lame.

JWH> Well you could've at least shown us what you had so far instead of
JWH> letting us solve the problem for you:

JWH> $string = "Today is a very beautiful day and the sun is shining";

JWH> $words = explode(" ",$string);
JWH> $pos = 0;

JWH> foreach($words as $word)
JWH> {
JWH> if(isset($w[$word]))
JWH> { $w[$word] .= ",$pos"; }
JWH> else
JWH> { $w[$word] = $pos; }

JWH> $pos += strlen($word) + 1;
JWH> }

JWH> print_r($w);

JWH> ---John W. Holmes...

JWH> PHP Architect - A monthly magazine for PHP Professionals. Get your copy
JWH> today. http://www.phparch.com/


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



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


Re[2]: [PHP] Divide into words

2002-12-16 Thread Uros Gruber
Hi!

I have dome almost the same

$input = 'Today is a very beautiful day and the sun is shining';

$output = array();
$words = explode(' ',$input);

$cur_pos = 0;
foreach($words as $word) {
if(!empty($output[$word])){
$output[$word] .= ','.$cur_pos;
} else {
$output[$word] = $cur_pos;
}
$cur_pos += strlen($word) + 1;
}
unset ($word);


but i thought if there is some better way. I also tried
Marco's example and adjust it a little bit to get the same
results. And here is some benchmark i have.

with this example i get  0.0024310350418091
and with Marco's i get 0.0034389495849609s

So using two array is faster anyway. Probably of explode
speed.

-- 
bye,
 Uros
Monday, December 16, 2002, 6:36:37 PM, you wrote:

>> For example i have some words:
>> 
>> Today is very beautiful day and sun is shining
>> 
>> What i want to get from this is array
>> 
>> words
>>  [Today] => 0
>>  [Is] => 6,30
>>  [Very] => 8
>>  [beautiful] => 12
>>  ..
>> 
>> Can somebody please help me with this. Those nubers are
>> position of special word in above sentence. If word repeates
>> i want to have both positions saved in same row like word is.
>> 
>> I tried something but i think it's to lame.

JWH> Well you could've at least shown us what you had so far instead of
JWH> letting us solve the problem for you:

JWH> $string = "Today is a very beautiful day and the sun is shining";

JWH> $words = explode(" ",$string);
JWH> $pos = 0;

JWH> foreach($words as $word)
JWH> {
JWH> if(isset($w[$word]))
JWH> { $w[$word] .= ",$pos"; }
JWH> else
JWH> { $w[$word] = $pos; }

JWH> $pos += strlen($word) + 1;
JWH> }

JWH> print_r($w);

JWH> ---John W. Holmes...

JWH> PHP Architect - A monthly magazine for PHP Professionals. Get your copy
JWH> today. http://www.phparch.com/


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