|
| 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
| |
|
|