Jump to content
php.lv forumi

Skaitit vardus


Gacha

Recommended Posts

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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 <_<

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

$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;

Link to comment
Share on other sites

×
×
  • Create New...