23. juli 2002 - 20:45Der er
28 kommentarer og 1 løsning
Hvordan laver man nyheds udskift med max 100 tegn ?
Hejsa jeg er igang med at lave et lidt anderledes nyheds system end jeg har lavet før og der må max være 100 Tegn i Nyhed Brød Teksten hvordan gør jeg så det ???
Efter ti år i London, Madrid, Paris og Utrecht kommer Sabios AI-fokuserede program af arrangementer om kundeoplevelser, ‘Disrupt’, for første gang til Danmark.
hvis du vælger varchar eller var det charvar eller sådan noget.. så kan du vælge op til 25x tegn eller deromkring.. du skriver simpelt 100 så er det klaret.. men jeg vil stærkt anbefale at du istedet bruger et phpscript til at cutte din tekst ned.. til eks. nærmeste " " <- mellemrum.. på den måde kan du så skriver "..." efter teksten.. og så kan folk jo klikke på teksten får at læse videre..
$lang_tekst = "DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT... DETTE ER EN LANG TXT...";
$kort_tekst = cut($lang_tekst);
echo "$kort_tekst";
det er dog ligeglad med " "... den klikker bare efter tegn 97 og sætter 3 "." bag efter...
benzon >> du må forklare lidt bedre hvis du vil have folk til at svare specifikt på dit spørgsmål. Det er svært at vide om du mener: Brugeren ikke kan indtaste mere end 100 tegn. Om Der skal komme fejl hvis man har indtastet mere. Om man bare skal smide de første 100 tegn ind. Om der kommer 100 tegn ud når man henter det fra databasen. Om der skal komme 100 tegn ud når man udskriver det på siden. osv
dea_pq <-- Det du skriver vil det ikke bare blive bøvlet ?????? jeg hiver jo teskt ud af mysql
tipsen <-- Ville gerne bruge Well´s måde så den Cuter efter et mellemrum,
gizmo-gizmo <-- Det er til News !!!!! Det er Brød Tekst og det skal hives ud af Databasen, og nej brugeren taster bare det ind der skal stå i nyhed og så skulle jeg gerne have lavet en måde så den så kun hiver det ud der er nødvændigt !!!!
benzon: "Det er til News !!!!!" gør mig altså ikke klogere omkring den problemstilling du vil have løst - det kan godt være du har siddet nogle dage med systemet og ved præcist hvad du skal bruge "News" til og hvordan det skal fungere, men det gør vi andre altså ikke...
Men hvis du gerne vil begrænse brødteksten til ca. 100 tegn i udskriften - samtidig med at den så vidt muligt klipper smart, kan du du bruge følgende script:
Nogle af jer har nok set denne funktion før, men den er altså udmærket:
// Funktion, der "klipper" en tekst over på det mest hensigtsmæssige sted (".", " ", ) // str klip(str tekst, int længde, int tolerance)
function klip($tekst, $laengde = 10, $tolerance = 10) // $laengde og $tolerance kan udelades { $punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum $mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) { $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance $mere = ""; // ikke andet } elseif ($punktum !== false) { $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum } elseif ($mellemrum !== false) { $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum } else { $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over) }
<? include("mysql.ink"); mysql_connect("$dbhost","$dbuser","$dbpass"); mysql_select_db("$dbname"); $query = mysql_query("select * FROM news ORDER BY id DESC LIMIT 3") or die(mysql_error()); while($row = mysql_fetch_array($query)){ ?> <? $tekst = $row['indhold']; ?> <? function klip($tekst, $laengde = 10, $tolerance = 10) // $laengde og $tolerance kan udelades { $punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum $mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) { $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance $mere = ""; // ikke andet } elseif ($punktum !== false) { $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum } elseif ($mellemrum !== false) { $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum } else { $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over) }
du skal entent bruge: <? function klip($tekst, $laengde = 10, $tolerance = 10) // $laengde og $tolerance kan udelades { $punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum $mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) { $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance $mere = ""; // ikke andet } elseif ($punktum !== false) { $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum } elseif ($mellemrum !== false) { $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum } else { $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over) }
Du skal have funktionen stående een gang øverst i dit script eller i en include-fil - den skal der ikke pilles ved! Når du så skal bruge funktionen skriver du:
echo klip("tekst", 100,10);
hvor de to sidste argumenter er "optional" og vil antage standardværdierne fra funktionsdeklarationen, hvis de ikke angives i funktionskaldet!
Hvis du vil strippe html-tags generelt, kan du bruge funktionen striptags(), som fjerner alle html-tegn - er det brugbart?
Synes godt om
Ny brugerNybegynder
Din løsning...
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.