/ 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
bindestreg i en reg
Fra : FSJ


Dato : 08-02-09 10:07

Hej

Jeg bruger nedensående til at sætte html links på foreskomster af
mail adresser og links i en tilfældig tekst.
Men desværre klarer den ikke bindestreg f.eks. www.anders-and.dk.
Måske er jeg heldig at en regular expression kender der ser min
besked....

// link
$str = preg_replace("/\b((http(s?):\/\/)|(www\.))([\w\.]+)([\/\w+\.]+)
\b/i",
"<a href=\"http$3://$4$5$6\" target=\"_blank\">$2$4$5$6</a>", $str);
// mailto
$str = preg_replace("/([\w\.]+)(@)([\w\.]+)/i", "<a href=\"mailto:$0\">
$0</a>", $str);

Venligst
Finn

 
 
Thomas Lindgaard (09-02-2009)
Kommentar
Fra : Thomas Lindgaard


Dato : 09-02-09 15:15

FSJ wrote:
> Hej
>
> Jeg bruger nedensående til at sætte html links på foreskomster af
> mail adresser og links i en tilfældig tekst.
> Men desværre klarer den ikke bindestreg f.eks. www.anders-and.dk.
> Måske er jeg heldig at en regular expression kender der ser min
> besked....
>
> // link
> $str = preg_replace("/\b((http(s?):\/\/)|(www\.))([\w\.]+)([\/\w+\.]+)
> \b/i",
> "<a href=\"http$3://$4$5$6\" target=\"_blank\">$2$4$5$6</a>", $str);
> // mailto
> $str = preg_replace("/([\w\.]+)(@)([\w\.]+)/i", "<a href=\"mailto:$0\">
> $0</a>", $str);
>
> Venligst
> Finn

Hej Finn

Du skal have ændret første parameter fra
"/\b((http(s?):\/\/)|(www\.))([\w\.]+)([\/\w+\.]+)> \b/i"
til
"/\b((http(s?):\/\/)|(www\.))([\w\.]+)([\/\w+\.\-]+)> \b/i"

Og hvis man skal være helt pernitten, så tillader dit regexp vist også
URL'er der starter med punktum (f.eks. http://.blabla eller
www..blabla), så måske skulle du i stedet ændre til
"/\b((http(s?):\/\/)|(www\.))\w([\w\.]+)([\/\w+\.\-]+)> \b/i"

--
Mvh.
/Thomas

FSJ (10-02-2009)
Kommentar
Fra : FSJ


Dato : 10-02-09 10:13

On 9 Feb., 15:15, Thomas Lindgaard <tho...@it-snedkeren.dk> wrote:
> FSJ wrote:
> > Hej
>
> > Jeg bruger nedensående til at sætte html links på foreskomster  af
> > mail adresser og links i en tilfældig tekst.
> > Men desværre klarer den ikke bindestreg f.eks.www.anders-and.dk.
> > Måske er jeg heldig at en regular expression kender der ser min
> > besked....
>
> > // link
> > $str = preg_replace("/\b((http(s?):\/\/)|(www\.))([\w\.]+)([\/\w+\.]+)
> > \b/i",
> > "<a href=\"http$3://$4$5$6\" target=\"_blank\">$2$4$5$6</a>", $str);
> > // mailto
> > $str = preg_replace("/([\w\.]+)(@)([\w\.]+)/i", "<a href=\"mailto:$0\">
> > $0</a>", $str);
>
> > Venligst
> > Finn
>
> Hej Finn
>
> Du skal have ændret første parameter fra
> "/\b((http(s?):\/\/)|(www\.))([\w\.]+)([\/\w+\.]+)> \b/i"
> til
> "/\b((http(s?):\/\/)|(www\.))([\w\.]+)([\/\w+\.\-]+)> \b/i"
>
> Og hvis man skal være helt pernitten, så tillader dit regexp vist også
> URL'er der starter med punktum (f.eks.http://.blablaellerwww..blabla), så måske skulle du i stedet ændre til
> "/\b((http(s?):\/\/)|(www\.))\w([\w\.]+)([\/\w+\.\-]+)> \b/i"
>
> --
> Mvh.
> /Thomas

Hej thomas

Det virker helt fint.
Jeg havde så troet at jeg kunne udregne hvordan e-mail adresser også
kunne understøtte bindestreg.

Den jeg har gaflet er ( måske er det dig der har lavet den ? i 2002) :

// mailto
$str = preg_replace("/^(.+)@([^\(\);:,<>]+\.[a-zA-Z]{2,4})/", "<a href=
\"mailto:$0\">$0</a>", $str);

jeg har fosøgt at sætte \- forskellige steder, men jeg kan ikke få ind
i mit hoved hvordan logikken spiller, så det vil være dejlig med lidt
hjælp.

vh
Finn


Thomas Lindgaard (11-02-2009)
Kommentar
Fra : Thomas Lindgaard


Dato : 11-02-09 10:18

FSJ wrote:
> Hej thomas
>
> Det virker helt fint.
> Jeg havde så troet at jeg kunne udregne hvordan e-mail adresser også
> kunne understøtte bindestreg.
>
> Den jeg har gaflet er ( måske er det dig der har lavet den ? i 2002) :
>
> // mailto
> $str = preg_replace("/^(.+)@([^\(\);:,<>]+\.[a-zA-Z]{2,4})/", "<a href=
> \"mailto:$0\">$0</a>", $str);
>
> jeg har fosøgt at sætte \- forskellige steder, men jeg kan ikke få ind
> i mit hoved hvordan logikken spiller, så det vil være dejlig med lidt
> hjælp.
>
> vh
> Finn

Hej Finn

Det regexp du har dér er vist lidt løst i betrækket... f.eks. så fanger
det også en adresse som "test@@@@#¤§.gnyf".

Det burde nok laves om til noget i retning af:

$str = preg_replace("/^\w[\w\-\.]+@\w[\w\-\.]+\.\w+/i", "<a href=>
\"mailto:$0\">$0</a>", $str);

Ovenstående tillader også for meget, men det er trods alt lidt mere
stringent :)

Hvis du skal have noget, som er helt stringent, så prøv at kigge her:

http://uk2.php.net/preg_match

--
Mvh.
/Thomas

N/A (11-02-2009)
Kommentar
Fra : N/A


Dato : 11-02-09 10:18



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

Månedens bedste
Årets bedste
Sidste års bedste