/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Vis lidt af tekst fra database
Fra : nederbasse


Dato : 23-11-09 22:02

Hej

Jeg vil gerne vise en overskrift hentet fra en Mysql db som f.eks.:
Dette er en enme....
i stedet for
Dette er et emne der er for langt til at stå på siden hvor det skal vises

Jeg har prøvet at Google det men ved ikke rigtigt hvad jeg skal lede efter

Lars



 
 
Chano Andersen (24-11-2009)
Kommentar
Fra : Chano Andersen


Dato : 24-11-09 01:10

nederbasse skrev:
> Jeg vil gerne vise en overskrift hentet fra en Mysql db som f.eks.:
> Dette er en enme....
> i stedet for
> Dette er et emne der er for langt til at stå på siden hvor det skal vises

Jeg ville bare lave det direkte i SQL querien..

Kig f.eks. på disse:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_left
http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat

En konstruktion i stil med

SELECT IF(LENGTH(`emne`)>15,CONCAT(LEFT(`emne`,12),'...'),`emne`) AS
`NytEmne`

Skulle kunne gøre det.. Den vil returnere hele emnet hvis det er under
15 tegn langt, ellers kun de første 12 tegn efterfulgt af ... det er dog
utestet..


Du kan også bruge left funktionen i PHP, og gøre det samme der.. Uanset
hvad, ville jeg personligt smide en title="fuld emne linje" på emnet, så
vil det for det meste blive vist i fuld længde, når man holder musen
over det.

- Chano Andersen

Philip Nunnegaard (24-11-2009)
Kommentar
Fra : Philip Nunnegaard


Dato : 24-11-09 07:40

nederbasse skrev:
> Hej
>
> Jeg vil gerne vise en overskrift hentet fra en Mysql db som f.eks.:
> Dette er en enme....
> i stedet for
> Dette er et emne der er for langt til at stå på siden hvor det skal vises

Den nemme måde:
$titeltekst = "Dette er et emne der er for langt til at stå på siden
hvor det skal vises";

// Tager de første 15 tegn og smider "..." efter
if(strlen($titeltekst) > 15) {
$overskrift = substr($titeltekst,0,15)."...";
} else {
$overskrift = $titeltekst;
}

echo $overskrift; // returnerer "Dette er et emn..."
Den fulde overskrift kan så smides ind i en title, som Chano Andersen
foreslår:

echo "<span title=\"$titeltekst\">$overskrift</span>";

Martin (24-11-2009)
Kommentar
Fra : Martin


Dato : 24-11-09 13:53

Philip Nunnegaard wrote:
> nederbasse skrev:
>> Hej
>>
>> Jeg vil gerne vise en overskrift hentet fra en Mysql db som f.eks.:
>> Dette er en enme....
>> i stedet for
>> Dette er et emne der er for langt til at stå på siden hvor det skal vises
>
> Den nemme måde:
> $titeltekst = "Dette er et emne der er for langt til at stå på siden
> hvor det skal vises";
>
> // Tager de første 15 tegn og smider "..." efter
> if(strlen($titeltekst) > 15) {
> $overskrift = substr($titeltekst,0,15)."...";
> } else {
> $overskrift = $titeltekst;
> }
>
> echo $overskrift; // returnerer "Dette er et emn..."
> Den fulde overskrift kan så smides ind i en title, som Chano Andersen
> foreslår:
>
> echo "<span title=\"$titeltekst\">$overskrift</span>";

og til dem som ikke vil have det ender med
Dette er et em...
Eller dem som har html i sin tekst

echo preview_text($titeltekst, 15, true);

function preview_text($TEXT, $LIMIT, $TAGS = 0) {

// TRIM TEXT
$TEXT = trim($TEXT);

// STRIP TAGS IF PREVIEW IS WITHOUT HTML
if ($TAGS == 0) $TEXT = preg_replace('/\s\s+/', ' ',
strip_tags($TEXT));

// IF STRLEN IS SMALLER THAN LIMIT RETURN
if (strlen($TEXT) < $LIMIT) return $TEXT;

if ($TAGS == 0) return substr($TEXT, 0, $LIMIT) . " ...";
else {

$COUNTER = 0;
for ($i = 0; $i<= strlen($TEXT); $i++) {

if ($TEXT{$i} == "<") $STOP = 1;

if ($STOP != 1) {

$COUNTER++;
}

if ($TEXT{$i} == ">") $STOP = 0;
$RETURN .= $TEXT{$i};

if ($COUNTER >= $LIMIT && $TEXT{$i} == " ") break;

}

return $RETURN . "...";
}

}

Peter Farsinsen (24-11-2009)
Kommentar
Fra : Peter Farsinsen


Dato : 24-11-09 14:48

Martin wrote:

> // STRIP TAGS IF PREVIEW IS WITHOUT HTML
> if ($TAGS == 0) $TEXT = preg_replace('/\s\s+/', ' ', strip_tags($TEXT));

Hvad har strip_tags() gjort? ;)

> // IF STRLEN IS SMALLER THAN LIMIT RETURN
> if (strlen($TEXT) < $LIMIT) return $TEXT;

Hvad så, hvis længden på strengen matcher limit? ;)

> if ($TAGS == 0) return substr($TEXT, 0, $LIMIT) . " ...";

Her returnerer funktionen præcis det samme, som er foreslået tidligere ;)

--
Peter Farsinsen
fornavn@efternavn.dk

Martin (27-11-2009)
Kommentar
Fra : Martin


Dato : 27-11-09 17:51

On 24-11-2009 14:47, Peter Farsinsen wrote:
> Martin wrote:
>
>> // STRIP TAGS IF PREVIEW IS WITHOUT HTML
>> if ($TAGS == 0) $TEXT = preg_replace('/\s\s+/', ' ', strip_tags($TEXT));
>
> Hvad har strip_tags() gjort? ;)

Ja, det er noget gammelt skidt

>
>> // IF STRLEN IS SMALLER THAN LIMIT RETURN
>> if (strlen($TEXT) < $LIMIT) return $TEXT;
>
> Hvad så, hvis længden på strengen matcher limit? ;)

Så skriver man et komma ind, det er der altid lige plads til

>
>> if ($TAGS == 0) return substr($TEXT, 0, $LIMIT) . " ...";
>
> Her returnerer funktionen præcis det samme, som er foreslået tidligere ;)

Ja selvfølgelig, man har jo valgt at ikke have tags med over :)

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste