Gå til innhold

Sideskift på lang tekst


Anbefalte innlegg

Skrevet

Lager wap-side som skal ha nyheter.

 

Inne på en valgt nyhet kommer $tekst som da hentes fra mySQL.

 

Da mobiler har liten skjerm har jeg kommet frem til at ca. 450 tegn per side er passe.

 

Utfordringen er da enten å dele opp $tekst i bolker med 450 tegn og lenke til neste side, som igjen (hvis det er over 900 tegn) lenker til neste side osv.

 

Eller fikse det hele med variabeler i spørringen med hjelp av SELECT SUBSTRING.

 

$tekst vil normalt ikke være over 900 tegn men kan være det, så best om det ikke blir noen begrensing.

 

Setter pris på om noen har tips om metoder/kode :)

 

Mvh Akke

Videoannonse
Annonse
Skrevet

Tjaa.. sånn på stående fot så ville vel dette være passende

 

Men den har ikke kode for å lage nav-bar. Men siden den genererer en array så er ikke det noe stress. Det er bare å linke til neste side hvis ikke dette er den siste side (sizeof());

 

Du vil muligens også passe på at siden slutter med et helt ord slik at ikke ord blir delt på midten.

 

Håper dette hjelper.

Skrevet

Takker, dette hjalp veldig mye :)

 

Landet opp med:

  

$TegnPerSide=450;



$AntSider=ceil(strlen($tekst)/$TegnPerSide);

 for ($Cnt=0; $Cnt<$AntSider;$Cnt+=1)

 {

   $sidetekst[$Cnt]=substr($tekst, $Cnt*$TegnPerSide, $TegnPerSide);

 }

 

 If ($side == ""){

 	$vistittel = "<p><b>$tittel</b></p>";

 	$side = 0;

 	$sidenr = $side + 1;

 } else {

 	$sidenr = $side + 1;

 	$vistittel = "";

 }

 

 $mer = "<br><a href='nytt.php?vis=$vis&side=$sidenr'>Mer...</a>";

 

 if ($AntSider == $sidenr){

 	$mer = "";

 }

 

 $vissidetekst = trim ($sidetekst[$side]);

 

 echo ("$vistittel<p>$vissidetekst$mer</p>");

 

Sikkert litt rare løsninger på sideskift/lenke biten, men det funker. Eneste svakheten her som jeg kan se er at ord deles på midten.

 

Takk skal du ha BlueEAGLE :)

Skrevet

fant en funksjon på php.net som bare deler mellom ord, men den er egentlig til linjeskift så det må skrives om litt for å bli sideskift:

 


   function short_words($str,$cols,$cut) {

       $str = str_replace("rn","",$str);

       $str = str_replace("n","",$str);

       $str = str_replace("r","",$str);

       $tag_open = '<';

       $tag_close = '>';

       $in_tag = 0;

       $str_len = strlen($str);

       $segment_width = 0;

  

       for ($i=0; $i <= $str_len; $i++){

           if (substr($str,$i,strlen($cut)) == $cut) {

               $i += strlen($cut)-1;

               $segment_width = 0;

           } else {

               if ($str[$i] == $tag_open) {

                   $in_tag++;

               } elseif ($str[$i] == $tag_close) {

                   if ($in_tag > 0) {

                       $in_tag--;

                   }

               } else {

                   if ($in_tag == 0) {

                       $segment_width++;

                       if ($str[$i] == " ") {

                           $last_space = $i;

                       }

                       if (($segment_width > $cols) && ($str[$i] != " ")) {

                           if ($last_space < $i) {

                               $str = substr($str,0,$last_space).$cut.substr($str,$last_space);

                               $i   = $last_space + strlen($cut) - 1;

                           } else {

                               $str = substr($str,0,$i).$cut.substr($str,$i);

                               $i   += strlen($cut) - 1;

                           }

                           $last_space     = 0;

                           $str_len        = strlen($str);

                           $segment_width  = 0;

                       }

                   }

               }

           }

       }

       return $str;

   }



$str = short_words($str, 45 ,"<br />");

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...