Avatar billede eazye Nybegynder
06. august 2003 - 21:40 Der er 8 kommentarer og
1 løsning

forkorte teksten mellem <a href=(etellerandet)> og </a>

Hey derude..

Er der en af jer der kan hjælpe mig lidt med et problem?

jeg mangler et script som kan finde en tekst som står mellem et <a> og et </a> i en variabel, tjekke om den tekst er over 20 tegn og forkorte den til 19 tegn + .. hvis den er over de 20 tegn

eks:
<a href="www.side.dk/enlangteksther.html">www.side.dk/enlangteksther.html</a>
bliver til:
<a href="www.side.dk/enlangteksther.html">www.side.dk/enlangt..</a>

på forhånd tak

- EazyE
Avatar billede detox Nybegynder
06. august 2003 - 22:12 #1
Ja, hvis din tekst ligger i en variabel, kan du gøre sådan:

<?
$str = 'www.side.dk/et_meget_meget_langt_link_med_over_20_tegn';
if (strlen($str)>19) {
    $ny = substr($str, 0, 19) . "...";
}
echo "<a href=\"" . $str . "\">" . $ny . "</a>";
?>
Avatar billede eazye Nybegynder
06. august 2003 - 22:13 #2
det er ikke det.. jeg skal først finde teksten ud fra en større tekst..
Avatar billede detox Nybegynder
06. august 2003 - 22:14 #3
ok, det havde jeg misforstået...
Avatar billede schaefner Juniormester
06. august 2003 - 22:34 #4
Ved ikke hvorvidt dette er en optimal løsning, men under alle omstændigheder er det da en løsning ;o) Ideen er ikke særlig gennemtænk, men her kommer det:

<?php
preg_match_all('/(">[^<]+<\/a>)/',$str,$regs);

$findArr = $regs[1];
foreach ($findArr AS $value) {
  if (strlen($value) > 20) {
    $replaceArr[] = substr($value,0,19).'...';
  } else {
    $replaceArr[] = $value;
  }
}
$str = str_replace($findArr,$replaceArr,$str);
?>
Avatar billede schaefner Juniormester
06. august 2003 - 22:38 #5
Iøvrigt heller ikke testet
Avatar billede eazye Nybegynder
06. august 2003 - 22:40 #6
det virker..! dak dak! læg gerne svar!
Avatar billede detox Nybegynder
06. august 2003 - 22:57 #7
Sjovt med de regexp. Jeg synes osse den her matcher, selvom den er helt anderledes:
<?
$str = file_get_contents('text.txt');

preg_match_all ("|<[^>]+>(.*)</[^>]+>|i",
    $str, $matches);

foreach($matches[1] as $new) {
    if (strlen($new)>19) {
        $rep = substr($new,0,19) . "...";
        $str = str_replace($new, $rep, $str);
    }
}
echo nl2br($str);
?>
Avatar billede schaefner Juniormester
06. august 2003 - 23:02 #8
svar
Avatar billede detox Nybegynder
06. august 2003 - 23:05 #9
Ganske vidst mere fikst, med den der Array replace!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester