12. oktober 2004 - 14:59Der er
14 kommentarer og 1 løsning
Opdele tekst i et array
Jeg er ude efter et lille stykker kode der kan print de ord der er brugt i en tekst og samtidig fortælle mig hvor mange gange et ord er brugt. Jeg vil bruge split $pieces = split("[,. :]+!&-",$tekst); og så på en måde lave et 2 dimensionelt array til at samle det op i.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det er din regular expression der er gal. jeg tipper du ønsker at opdele på alle de tegn der står i strengen.
$pieces = split("[\[,. :\]+!&-]",$tekst);
tegnene '[' og ']' er specialtegn for regular expressions. for at bruge dem som almindelige bogstaver skal de escapes.
I den expression jeg skriver oven for benyttes de også i deres regexp-betydning: "vi omkranser en sekvens af tegn og hvert af de tegn kan bruges som match her"
mon noget af dette kan bruges til noget, jeg lærte da lidt af at lave det :-)
<? $tekst = <<<EOD Jeg er ude efter et lille stykker kode der kan print de ord der er brugt i en tekst og samtidig fortælle mig hvor mange gange et ord er brugt. Jeg vil bruge split $pieces = split("[,. :]+!&-",$tekst); og så på en måde lave et 2 dimensionelt array til at samle det op i. EOD;
hov, lagde ikke mærke til alfabetisere. Her en udvidet udgave
<? $tekst = <<<EOD Jeg er ude efter et lille stykker kode der kan print de ord der er brugt i en tekst og samtidig fortælle mig hvor mange gange et ord er brugt. Jeg vil bruge split $pieces = split("[,. :]+!&-",$tekst); og så på en måde lave et 2 dimensionelt array til at samle det op i. EOD;
//brugt hvor meget echo "<p /><b>Brug som de stod</b><br />"; foreach($ord as $k => $v) { echo "$k - $v gang<br />"; }
ksort($ord); //brugt hvor meget sorteret på ord echo "<p /><b>Brug sorteret på ord</b><br />"; foreach($ord as $k => $v) { echo "$k - $v gang<br />"; }
asort($ord); //brugt hvor meget sorteret på antal echo "<p /><b>Brug sorteret på antal</b><br />"; foreach($ord as $k => $v) { echo "$k - $v gang<br />"; } ?>
Jeg håber dette kan løse problemet med str_word_count. Sort klipper ikke ord over hos mig så det kan jeg ikke lige klare. <? //findes funktionen str_word_count
if (!function_exists('str_word_count')) { //næææ - så vi laver den selv samt en funktion til at fjerne tomme elementer, jeg ved ikke hvorfor den er nødvendig function empty_a( $t ) { if( $t != "" ) return $t; else return; } function str_word_count( $t, $cnt=0 ) { $m = preg_split("/[\s()\"=\[\];,.:+!&-\/{}\$0123456789]/U",$t); $m = array_filter($m, "empty_a"); if( $cnt==0 ) { // tæl antallet af ord $rc = count( $m ); } else { // returner arrayet $rc = $m; } return $rc; }
}
$tekst = <<<EOD Jeg er ude efter et lille stykker kode der kan print de ord der er brugt i en tekst og samtidig fortælle mig hvor mange gange et ord er brugt. Jeg vil bruge split \$pieces = split("[,. :]+!&-",\$tekst); og så på en måde lave et 2 dimensionelt array til at samle det op i. EOD;
//brugt hvor meget echo "<p /><b>Brug som de stod</b><br />"; foreach($ord as $k => $v) { echo "$k - $v gang<br />"; }
ksort($ord); //brugt hvor meget sorteret på ord echo "<p /><b>Brug sorteret på ord</b><br />"; foreach($ord as $k => $v) { echo "$k - $v gang<br />"; }
asort($ord); //brugt hvor meget sorteret på antal echo "<p /><b>Brug sorteret på antal</b><br />"; foreach($ord as $k => $v) { echo "$k - $v gang<br />"; }
Ja det er da ikke godt, ikke mindst fordi æøåÆØÅ ikke regnes med som bogstaver og det skaber jo lidt "ged" i det.
hos dig bliver sommergæster til
sommerg ster
så der er mindst en ting der skal rettes i den regexp
Så vidt jeg har kunnet læse mig til er der ingen begrænsninger ved hvor mange tegn den kan tage. Jeg har lige provet med samme indput hos os begge, nemlig dit 1. ønske
---------------------------------------- Jeg er ude efter et lille stykker kode der kan print de ord der er brugt i en tekst og samtidig fortælle mig hvor mange gange et ord er brugt. Jeg vil bruge split $pieces = split("[,. :]+!&-",$tekst); og så på en måde lave et 2 dimensionelt array til at samle det op i. -----------------------------------------
du har 4 ord mere end jeg og det er lige det antal æøå du har: fortælle, så, på og måde
jeg kigger på det men har jo lidt svært ved at teste det :-(
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.