Bunkertor 7 Posted November 30, 2012 Report Share Posted November 30, 2012 Sveiki! Vajag uzrakstīt skriptu, kas sadalītu doto tekstu 3-vārdu frāzēs un tās frāzes noglabātu kā comma-separated stringu iekš datubāzes. Izdomājos gan šā, gan tā, pamēģināju ar preg match meklēt atstarpes bet šķiet ka visvienkāršāk ir sadalīt tekstu pa vārdam un tad lipināt pa trim vārdiem kopā. Šajā piemērā būs 23 frāzes pa 3 vārdiem: "skrien ezitis apkart", "ezitis apkart mucai", "apkart mucai un" utt... <?php $string = "Skrien ezitis apkart mucai un skrien vienu dienu, divas dienas un tad peksni ezitis apstajas un saka: Ja sita seta nebeigsies, tad es iesu atpakal"; $words = str_word_count(strtolower($string),1); ?> Tagad es no masīva words varu izvilkt jebkuru elementu. Piemēram: $words[2] būtu "apkart". Un vārdu skaitu stringā es arī pavisam viegli varu dabūt. Kopējo frāžu skaitu arī - tas vienmēr būs vienlīdzīgs $wordcount mīnus 2. Varētu vienkārši ņemt While loop un lipināt atsevišķos masīva elementus kopā pa trim, kamēr visas 23 frāzes ir salipinātas. Gribēju pajautāt vai nav kāds loģiskāks un labāks veids kā to visu izdarīt? Quote Link to comment Share on other sites More sharing options...
aaxc Posted November 30, 2012 Report Share Posted November 30, 2012 Iesaku palasīt par aritmētiskām operācijām. Quote Link to comment Share on other sites More sharing options...
briedis Posted November 30, 2012 Report Share Posted November 30, 2012 Lūdzu: http://codepad.viper-7.com/Z77yu5 Viss mega kods: <?php $a = explode(' ', 'Skrien ezitis apkart mucai un skrien vienu dienu, divas dienas un tad peksni ezitis apstajas un saka: Ja sita seta nebeigsies, tad es iesu atpakal'); $a2 = []; foreach($a as $k=>$w){ $a2[] = $w.(isset($a[$k+1])?' '.$a[$k+1]:'').(isset($a[$k+2])?' '.$a[$k+2]:''); } print_r($a2); Quote Link to comment Share on other sites More sharing options...
aaxc Posted November 30, 2012 Report Share Posted November 30, 2012 Var arī ar preg_match_all vienā rindā: preg_match_all( '/([A-Za-z0-9\.]* [A-Za-z0-9\.]* [A-Za-z0-9\.]* )/', $string, $matches ); Quote Link to comment Share on other sites More sharing options...
Bunkertor 7 Posted December 15, 2012 Author Report Share Posted December 15, 2012 Paldies par uzvedināšanu uz pareizās domas! @briedi, izskatās forši, bet godīgi sakot es neko nesapratu kas Tavā skriptā notiek :) Beigās uzrakstīju šitā. Daudz garāk, bet man vismaz pašam pielec. Možka kādam noder: <?php $query_string = mysql_query("SELECT * FROM `teksti`"); while($string_row = mysql_fetch_array($query_string)){ $string = $string_row['content']; $string = ereg_replace("[^A-Za-z0-9 ]", "", $string); $split_string = explode(" ", $string); $size_split_string = count($split_string); $size_split_string = $size_split_string-1; $x=0; $y=1; $z=2; for($i=0; $i<=$size_split_string; $i++){ if(($split_string[$x]!='')&&($split_string[$y]!='')&&($split_string[$z]!='')){ $three_phrase = $split_string[$x].' '.$split_string[$y].' '.$split_string[$z]; mysql_query("INSERT INTO `split_teksts` (`id` ,`pid` ,`split_teksts`) VALUES (NULL , '".$string_row['id']."', '".$three_phrase."')"); $x++; $y++; $z++; } } ?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.