Jump to content
php.lv forumi

Recommended Posts

Posted

Atceros, vai man liekas, ka pirms laika uzduros uz php f-cijas, ar kuru var skaitiit textā vārdus. Un parādīt no teksta piemēram tikai pirmos 100 vārdus.

Mekleju, bet nevaru atrast vai kads nez kā to sauca?

Posted

ja pienjem, ka vaardus atdala ar atastarpeem, tad elementari var ar explore, implde un array_slice to visu izdariit

Posted
nu bet vai tad nebija kāda f-cija, kas to dara?

bija taada countWords() kaadreiz:

 

function countWords($text){
   $wordCount = 0;
   $elements = explode(' ', $text);
   foreach ($elements as $word){
       if (!empty($word)){
           $wordCount++
       }
   }
   return $wordCount;
}

 

:P

Posted

Nu to jau es petiju, bet tas atgriezh masiivu. Domaju vai nav taada, kas darbojas apmeram taa, kaa substr bet ar vaardiem. Bet ja nav tad bus jaizmanto tas pats str_word_count

Posted

Nu kaut vai var modificeet shito pashu:

 

 

function CountWords($text,$count=1){
  $wordCount = 0;
  $outText = '';
  $elements = explode(' ', $text);
  foreach ($elements as $word){
      if (!empty($word)){
          $wordCount++;
          if ($wordCount<=$count) {
               $outText.=$word.' ';
          }
      }
  }
  return array('count'=>$wordCount;'text'=>$outText);
}

 

testeejis neesmu, bet vajadzeetu straadaat...

Posted (edited)

A kāpēc tev šī iespēja ir izdevīga tieši tādā formā? Pirmā doma (kāpēc tev vajag tos 100 vārdus) bija, ka gribi lapā publicēt tikai mazu daļiņu texta un pielikt ">>lasīt tālāk".

 

Ja tā, tad piemēram tie 100 vārdi apraus teikumu pusratā (galīgi nesakarīgi sanāk).

Varbūt ir izdevīgāk ņemt piemēram pirmos 3 teikumus..

To varētu panākt izveidojo masīvu ar explode('.', $teksts);

es tikai tagad škrubinu galvu, jo nezinu kā lai dabū, ka tikai pirmos 3 teikumus..(es pats vēl tikai mācos) ;)

Edited by Lokomotive
Posted

nu ja tu uztaisi $mas=explode('.',$text);

tad pirmos triis "teikumus" tu vari ieguut $str=$mas[0].$mas[1],$mas[2];

 

bet sheit der padomaat par universaalismu, proti, ja tev pirmajaa teikumaa ir: "Tas notika 1991. gadaa..." tad sheit rodas jau jauns teikums :) taapat jaaparedz daudzpunktes etc. Taa kaa ar tiem teikumiem un citaam valodas iipatniibaam nav nemaz tik viegli ciiniities.

shkjiet labaak to organizeet veidojot kaut kaadu atziimi, piem "|" vai veel kaadu simboju, ko reti izmanto un tad liidz tam arii tekstu raadiit...

Posted

Nu doma man ir taisīt tā, ka aiz ievada liek ### un tad parejais, bet pašlaik man jau ir pietiekami ziņas, kur nav tie ### un tapēc vajag lai vismaz viņš pataisa īsāku textu.

 

@hu_ha a kas būs, ja nav tie 3 teikumi? php neizmetīs errorus? Šis vispārarī būtu labs veids <_<

Posted

es nez vai buus warning vai notice, bet vienmeer jau var uztaisiit skriptu kas to visu paarbauda:

$mas=explode('.',$text);

$i=0;

foreach($mas as $m)

{

$str.=$m;

$i++;

if ($i>=3) break;

}

echo $str;

 

nepaarbaudiiju, bet nu ideja taada...

Posted

vai nav labaak apmeeram kautkaa shaadi:

$mas=explode('.',$text);
for($i=0;$i<max(count($mas,3));$i++)
{
 $str.=$mas[$i];
}
echo $str;

Posted
$mas=explode('.',$text);
for($i=0;$i<max(count($mas,3));$i++)
{
 $str.=$mas[$i];
}
echo $str;

nu tur manupraat ir iekavas nepareizi, bet nu varu kljuudiities.

un ir taada lieta, ka nav labi cilkaa katru reizi skaitiit masiiva apjomu vai kaada stringa darumu. tas protams neattiecas uz maziem masiiviem, bet ja tas teksts buus 3000 teikumus garsh, tad katru reizi jaaskaita viss masiivs un jaatrod maksimaalais elements starp 3 un masiiva apjomu.

tad jau labaak:

$mas=explode('.',$text);
$max=max(count($mas),3);
for($i=0;$i<$max;$i++)
{
 $str.=$mas[$i];
}
echo $str;

Posted

a kur probleemas ar iekavaam, to nesapratu.

bet pareizi vien ir, php tak cikla iteraacijaa katreiz paareekjina to nosaciijumu. biju piemirsis. pareizaak vien ir tas peedeejais koda gabals.

×
×
  • Create New...