Jump to content
php.lv forumi

Sadalīt doto tekstu 3 vārdu frāzēs


Bunkertor 7

Recommended Posts

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 2 weeks later...

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++;        
                    }
            }
?>
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...