/ 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
Lang tekst skal forkortes
Fra : Mikkel Jakobsen


Dato : 12-12-06 15:53

Jeg har en lang beskrivelse af et billede som ligger i en
variabel.
teksten er alt for lang til at vise sammen med billedet.

Nu kunne jeg godt tænke mig at få vist de første 20 tegn af
beskrivelsen, som et link der henviser til hele beskrivelsen.

Noget i stil med:

$beskrivelse = "En meget lang beskrivelse af billedet.... osv osv
osv"

$kort_beskrivelse = "En meget lang.....";

spørgsmålet er hvordan jeg får php til automatisk at forkorte den
lange beskrivelse til 20 tegn.

Mikkel

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Frøkjær (12-12-2006)
Kommentar
Fra : Jens Frøkjær


Dato : 12-12-06 16:09

$kort_beskrivelse = substr($beskrivelse, 0, 20)."...";
--
Jens F!

Mikkel Jakobsen skrev:
> Jeg har en lang beskrivelse af et billede som ligger i en
> variabel.
> teksten er alt for lang til at vise sammen med billedet.
>
> Nu kunne jeg godt tænke mig at få vist de første 20 tegn af
> beskrivelsen, som et link der henviser til hele beskrivelsen.
>
> Noget i stil med:
>
> $beskrivelse = "En meget lang beskrivelse af billedet.... osv osv
> osv"
>
> $kort_beskrivelse = "En meget lang.....";
>
> spørgsmålet er hvordan jeg får php til automatisk at forkorte den
> lange beskrivelse til 20 tegn.
>
> Mikkel
>

Martin (12-12-2006)
Kommentar
Fra : Martin


Dato : 12-12-06 18:25

Jens Frøkjær wrote:
> $kort_beskrivelse = substr($beskrivelse, 0, 20)."...";

Men vil ødelægge et link / et billede / alt...
Fx.
<img src="sti/til/billede.jpg" alt="Test"/>
Vil blive til
<img src="sti/til/bil
også bliver det lidt nederen :)

Så der er lavet en masse funktioner til dette....

<?php
function html_substr($posttext, $minimum_length = 200, $length_offset =
20, $cut_words = FALSE, $dots = TRUE) {

// $minimum_length:
// The approximate length you want the concatenated text to be


// $length_offset:
// The variation in how long the text can be in this example text
// length will be between 200 and 200-20=180 characters and the
// character where the last tag ends

// Reset tag counter & quote checker
$tag_counter = 0;
$quotes_on = FALSE;
// Check if the text is too long
if (strlen($posttext) > $minimum_length) {
// Reset the tag_counter and pass through (part of) the entire text
$c = 0;
for ($i = 0; $i < strlen($posttext); $i++) {
// Load the current character and the next one
// if the string has not arrived at the last character
$current_char = substr($posttext,$i,1);
if ($i < strlen($posttext) - 1) {
$next_char = substr($posttext,$i + 1,1);
}
else {
$next_char = "";
}
// First check if quotes are on
if (!$quotes_on) {
// Check if it's a tag
// On a "<" add 3 if it's an opening tag (like <a href...)
// or add only 1 if it's an ending tag (like </a>)
if ($current_char == '<') {
if ($next_char == '/') {
$tag_counter += 1;
}
else {
$tag_counter += 3;
}
}
// Slash signifies an ending (like </a> or ... />)
// substract 2
if ($current_char == '/' && $tag_counter <> 0)
$tag_counter -= 2;
// On a ">" substract 1
if ($current_char == '>') $tag_counter -= 1;
// If quotes are encountered, start ignoring the tags
// (for directory slashes)
if ($current_char == '"') $quotes_on = TRUE;
}
else {
// IF quotes are encountered again, turn it back off
if ($current_char == '"') $quotes_on = FALSE;
}

// Count only the chars outside html tags
if($tag_counter == 2 || $tag_counter == 0){
$c++;
}

// Check if the counter has reached the minimum length yet,
// then wait for the tag_counter to become 0, and chop the
string there
if ($c > $minimum_length - $length_offset && $tag_counter ==
0 && ($next_char == ' ' || $cut_words == TRUE)) {
$posttext = substr($posttext,0,$i + 1);
if($dots){
$posttext .= '...';
}
return $posttext;
}
}
}
return $posttext;
}

?>

Mikkel Jakobsen (12-12-2006)
Kommentar
Fra : Mikkel Jakobsen


Dato : 12-12-06 18:25

Tak...

Det var lige hvad jeg søgte.


Mikkel

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste