/ 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
indsætte space i langt link
Fra : Leonard


Dato : 04-01-06 12:25

Jeg bruger denne:

   $tekst =
ereg_replace("(((f|ht){1}tp://|www)[a-zA-Z0-9@:%_.~#/?&-]+[a-zA-Z0-9/])",
"<a href=\"\\1\" title=\"\\1\">\\1</a>",

til at lave tekst, der ligner links om til aktive links.
Problemet er at links i dag bliver frygteligt lange, så jeg vil gerne
indsætte et mellemrum i den viste tekst for hver 50 tegn i \\1, men
altså kun i den sidste forekomst, den del der vises på skærmen.

Men jeg kan ikke lige dreje en måde at gøre det på?

--
Leonard
http:/leonard.dk/hjemmeside/

 
 
Martin (04-01-2006)
Kommentar
Fra : Martin


Dato : 04-01-06 17:26

Leonard wrote:
> Jeg bruger denne:
>
>    $tekst =
> ereg_replace("(((f|ht){1}tp://|www)[a-zA-Z0-9@:%_.~#/?&-]+[a-zA-Z0-9/])",
> "<a href=\"\\1\" title=\"\\1\">\\1</a>",
>
> til at lave tekst, der ligner links om til aktive links.
> Problemet er at links i dag bliver frygteligt lange, så jeg vil gerne
> indsætte et mellemrum i den viste tekst for hver 50 tegn i \\1, men
> altså kun i den sidste forekomst, den del der vises på skærmen.
>
> Men jeg kan ikke lige dreje en måde at gøre det på?
>

http://dk2.php.net/manual/en/function.wordwrap.php

kan nok gøre det for dig :)

Leonard (05-01-2006)
Kommentar
Fra : Leonard


Dato : 05-01-06 09:23

Martin <news@natten-i.dk> wrote:

>>    $tekst =
>> ereg_replace("(((f|ht){1}tp://|www)[a-zA-Z0-9@:%_.~#/?&-]+[a-zA-Z0-9/])",
>> "<a href=\"\\1\" title=\"\\1\">\\1</a>",
>>
>> til at lave tekst, der ligner links om til aktive links.
>> Problemet er at links i dag bliver frygteligt lange, så jeg vil gerne
>> indsætte et mellemrum i den viste tekst for hver 50 tegn i \\1, men
>> altså kun i den sidste forekomst, den del der vises på skærmen.

>http://dk2.php.net/manual/en/function.wordwrap.php
>
>kan nok gøre det for dig :)

Ja, men det giver så bare det problem, at med en almindelig font, hvor
de enkelte tegn ikke fylder det samme, der ser det underligt ud når al
tekst ombrydes efter det samme antal tegn. Det giver en meget uens
længde på linierne.
Desuden er det heller ikke bare ligetil at wordwrappe teksten før den
formatteres til html, det giver et underligt resultat, og det er
heller ikke så godt at wordwrappe hele html'en.

Mit problem er at få fat i lige den sidste forekomst af \\1 der er i
<a href=\"\\1\" title=\"\\1\">\\1</a> og så wordwrappe den del og
sætte den ind igen.

--
Leonard
http:/leonard.dk/hjemmeside/

Peter Brodersen (05-01-2006)
Kommentar
Fra : Peter Brodersen


Dato : 05-01-06 09:59

On Wed, 04 Jan 2006 12:24:46 +0100, Leonard <usenet@leonard.dk> wrote:

>Men jeg kan ikke lige dreje en måde at gøre det på?

Jeg ville ikke absolut begrænse det til en regex. Det er fint for
match-delen, men hvad med at kalde en funktion, hvor du selv kan styre
outputtet?

Du kan fx bruge preg_replace_callback(), hvor du matcher en string, og
så smider det matchede efter en funktion. I den funktion kan du så
have den udvidede logik.

--
- Peter Brodersen
Find dig selv: http://map.ter.dk/

Leonard (05-01-2006)
Kommentar
Fra : Leonard


Dato : 05-01-06 11:11

Peter Brodersen <usenet2006@ter.dk> wrote:

>Du kan fx bruge preg_replace_callback(), hvor du matcher en string, og
>så smider det matchede efter en funktion. I den funktion kan du så
>have den udvidede logik.

Lige det hint jeg skulle bruge, tak for det.
Og så fik jeg samtidigt løst problemet med links, der skrives uden
http://

--
Leonard
http:/leonard.dk/hjemmeside/

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

Månedens bedste
Årets bedste
Sidste års bedste