Gå til innhold

Skriv bare de 100 første tegnene av en streng...


Anbefalte innlegg

Har jobbet en del med en nettside jeg skal legge ut i anledinng min store verdensreise. Har brugt php til å lage alt fra ting som include(meny) til et CMS som jeg skal blogge fra. Foreløbig får jeg greit skrevet inn tittel på bloggen og selve bloggen. Dette blir plasert i en MySQL data base. For å lese bloggen får du foreløbig opp en liste over alle de forskjellige bloggene. Her er det tittelen på bloggen som kommer ut som link. Trykker du på linken vil du bli sendt til en ny side hvor du kan lese bloggen. Det jeg i middlertid savner er muligheten for f.eks. å poste de første 100 tegnene av bloggen under titelen i listen over de forskjellige bloggene.

 

Uklart?? Se her så skjønner du kanskje hvor jeg vil hend...

Klikk for å se/fjerne innholdet nedenfor

Slik er det...

Slik vil jeg ha det...

  • Blogg 1.
    De hundre første tegnene av selve bloggen
  • Blogg 2.
    De hundre første tegnene av blogg 2.
  • (...)

 

Finnes det en funsjon eller noen god og effektiv måte å gjøre dette på? Har sett noen har et eget comment felt hvor de kan skrive inn en slik indeks (om du vil). Dette er jo såklart et alternativ, men det medfører jo flere feter i sql basen og flere variabler å holde styr på. I tillegg må jeg i teorien skrive ting to ganger for å få det til å fungere.

 

Noen som har noen gode forlag?

Endret av Steffenho
Lenke til kommentar
Videoannonse
Annonse

Jeg har heller vist de 2 første setningne, da det ellers kan bli delt både midt i ord og setninger.

 

Jeg gjorde det så enkelt som :

$text = explode(".", $text);

echo $text[0].". ".$text[1];

 

Dette tar da ikke høyde for setninger som slutter med ? eller !, og det kan hende at den deler opp en dato, e.l, men det duger til mitt bruk. ;)

Lenke til kommentar

Japp, er en mulighet det også, men innimellom kan det bli litt rart...

 

F.eks "Jeg skulle dra og se hvor mange prosenter jeg fikk på Avis"

kan i verste fall bli "Jeg skulle dra og se hvor mange pros....", noe som kan bli litt uheldig tolket av den som bare leser det :p

 

(er vel flere eksempler, men kom ikke på noen spesifikke:P)

Lenke til kommentar

Hva med wordwrap()?

Den er "soft" med mindre du setter siste parameter til 1, tror jeg.

(Dvs. den kutter ikke midt i et ord. Så du får maks lengde 100, men oftest noen få tegn kortere for å unngå å kutte ord)

PHP

<?php

define( 'DELIM', '|#!§|' );

define( 'MAX_LEN', 100 );

 

$str_to_split = '...';

$result = '';

if( strlen( $str_to_split ) > MAX_LEN )

{

  $split_str = wordwrap( $str_to_split, MAX_LEN, DELIM );

 

  if( ($p = strpos( $split_str, DELIM ) ) &#33;== false )

    $result = substr( $split_str, 0, $p );

  else

    $result = $split_str; // This should never occur, but safety first...

}

else

  $result = $str_to_split;

 

echo $result;

?>

Det er en liten feil i scriptet pga. forumet, men den ene linjen som inneholder et og-tegn, skal se slik ut:

if( ($p = strpos( $split_str, DELIM ) ) !== false )

Endret av Nazgul
Lenke til kommentar
ka med

echo substr($tekst,0,100).'....';

7237803[/snapback]

Å gjøre det i PHP belaster serveren unødvendig. Like greit å gjøre det i databasen:
SELECT LEFT(kolonne, 100) AS kolonne FROM tabell

7238057[/snapback]

 

Bruk SUBSTR (substring i ansi) i sql, ikke LEFT. Mer korrekt.

Lenke til kommentar
ka med

echo substr($tekst,0,100).'....';

7237803[/snapback]

Å gjøre det i PHP belaster serveren unødvendig. Like greit å gjøre det i databasen:
SELECT LEFT(kolonne, 100) AS kolonne FROM tabell

7238057[/snapback]

Bruk SUBSTR (substring i ansi) i sql, ikke LEFT. Mer korrekt.

7238348[/snapback]

Etter hva jeg ser i MySQL-manualen så virker det som at SUBSTR() er mer beregnet på å hente ut strenger som ikke begynner i begynnelsen av strengen. LEFT() henter kun ut fra begynnelsen av strengen.

 

Men SUBSTR() er mer korrekt ifølge SQL-standarden?

Lenke til kommentar
Etter hva jeg ser i MySQL-manualen så virker det som at SUBSTR() er mer beregnet på å hente ut strenger som ikke begynner i begynnelsen av strengen. LEFT() henter kun ut fra begynnelsen av strengen.

 

Men SUBSTR() er mer korrekt ifølge SQL-standarden?

7240338[/snapback]

 

Etter hva jeg har opplevd finner du ikke LEFT i f.eks Oracle elns. SUBSTR() kan brukes mer over hele fjøla. Måtte gå fra LEFT til substr selv. I følge standard er det vel substring() som er det korrekte, men dunno om mysql støtter denne.

Lenke til kommentar
Etter hva jeg ser i MySQL-manualen så virker det som at SUBSTR() er mer beregnet på å hente ut strenger som ikke begynner i begynnelsen av strengen. LEFT() henter kun ut fra begynnelsen av strengen.

 

Men SUBSTR() er mer korrekt ifølge SQL-standarden?

7240338[/snapback]

Etter hva jeg har opplevd finner du ikke LEFT i f.eks Oracle elns. SUBSTR() kan brukes mer over hele fjøla. Måtte gå fra LEFT til substr selv. I følge standard er det vel substring() som er det korrekte, men dunno om mysql støtter denne.

7240355[/snapback]

Joda, både SUBSTR og SUBSTRING finnes, men jeg tenker at man ikke trenger å bruke mer avanserte funksjoner enn nødvendig. Han skriver at han bruker MySQL, og man må vel uansett gå over koden minst én gang hvis man flytter den rundt på forskjellige motorer (selv om man følger standarden).
Lenke til kommentar
Joda, både SUBSTR og SUBSTRING finnes, men jeg tenker at man ikke trenger å bruke mer avanserte funksjoner enn nødvendig. Han skriver at han bruker MySQL, og man må vel uansett gå over koden minst én gang hvis man flytter den rundt på forskjellige motorer (selv om man følger standarden).

7240458[/snapback]

 

Joa, men er litt for å holde en god disiplin fra starten. lite vits å lære inn LEFT når det er dbspesifikt.

Lenke til kommentar

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...