Gacha Posted April 6, 2004 Report Posted April 6, 2004 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?
bubu Posted April 7, 2004 Report Posted April 7, 2004 ja pienjem, ka vaardus atdala ar atastarpeem, tad elementari var ar explore, implde un array_slice to visu izdariit
Gacha Posted April 7, 2004 Author Report Posted April 7, 2004 nu bet vai tad nebija kāda f-cija, kas to dara?
Kaklz Posted April 7, 2004 Report Posted April 7, 2004 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
Roze Posted April 7, 2004 Report Posted April 7, 2004 Why dont you use the mighty manual? http://lv.php.net/str_word_count
Gacha Posted April 7, 2004 Author Report Posted April 7, 2004 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
des Posted April 8, 2004 Report Posted April 8, 2004 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...
Lokomotive Posted April 8, 2004 Report Posted April 8, 2004 (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 April 8, 2004 by Lokomotive
hu_ha Posted April 9, 2004 Report Posted April 9, 2004 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...
Gacha Posted April 9, 2004 Author Report Posted April 9, 2004 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 <_<
hu_ha Posted April 9, 2004 Report Posted April 9, 2004 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...
bubu Posted April 9, 2004 Report Posted April 9, 2004 vai nav labaak apmeeram kautkaa shaadi: $mas=explode('.',$text); for($i=0;$i<max(count($mas,3));$i++) { $str.=$mas[$i]; } echo $str;
hu_ha Posted April 9, 2004 Report Posted April 9, 2004 $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;
bubu Posted April 10, 2004 Report Posted April 10, 2004 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.
hu_ha Posted April 10, 2004 Report Posted April 10, 2004 a kur probleemas ar iekavaam, to nesapratu. max(count($mas,3)) != max(count($mas),3) siikums.. :)
Recommended Posts