Likes Likes:  0
Resultaten 1 tot 8 van de 8
Geen

Onderwerp: [php] regexp

  1. #1
    Jonathan
    [php] regexp
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    [php] regexp

    Hoi,

    ik heb mbv zoeken op google de volgende functie in PHP gemaakt die een
    string als input neemt en als output dezelfde string geeft maar dan
    eventuele urls uitgebreid heeft met een html link. Voorbeeld: 'Dit is de
    link http://www.test.com' wordt omgezet naar: 'Dit is de link <a
    href=http://www.test.com target="_blank">http://www.test.com</a>'.

    function text2url($string)
    {
    $string =
    preg_replace("((http://|ftp://)?([a-zA-Z1-9\-_\.]+\.[a-zA-Z1-9\-_]+\.[a-z]{2
    ,3}(/[a-z\-/\._\?=&]+)?))", "<a href=\"\\1\\2\" target=\"_blank\">\\0</a>",
    $string);
    $string =
    preg_replace("((href=\")([a-zA-Z1-9\-_\.]+\.[a-zA-Z1-9\-_]+\.[a-z]{2,3}(/[a-
    z\-/\._\?=&]+)?))", "href=\"http://\\2", $string);
    return($string);
    }

    Maar gaat het vaak mis als de url ook nog een querystring heeft.
    Bijvoorbeeld:

    http://www.test.com/test.php?forum=30&topic=88

    levert uiteindelijke een linkje op naar

    http://www.test.com/test.php?forum=

    Waarom gaat dit niet goed?

    Alvast bedankt!

    Groeten,
    Jonathan



  2. #2
    Ronald Paul
    [php] regexp
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] regexp

    "Jonathan" <jonathan@nospam-tricolon.com> schreef:

    >function text2url($string)
    >{
    > $string =
    >preg_replace("((http://|ftp://)?([a-zA-Z1-9\-_\.]+\.[a-zA-Z1-9\-_]+\.[a-z]{2
    >,3}(/[a-z\-/\._\?=&]+)?))", "<a href=\"\\1\\2\" target=\"_blank\">\\0</a>",
    >$string);
    > $string =
    >preg_replace("((href=\")([a-zA-Z1-9\-_\.]+\.[a-zA-Z1-9\-_]+\.[a-z]{2,3}(/[a-
    >z\-/\._\?=&]+)?))", "href=\"http://\\2", $string);
    > return($string);
    >}
    >
    >Maar gaat het vaak mis als de url ook nog een querystring heeft.
    >Bijvoorbeeld:
    >
    >http://www.test.com/test.php?forum=30&topic=88
    >
    >levert uiteindelijke een linkje op naar
    >
    >http://www.test.com/test.php?forum=
    >
    >Waarom gaat dit niet goed?


    Omdat de twee reguliere expressies geen cijfers toelaten in deze
    querystring. De twee reguliere expressies met toelating van cijfers in
    de query string worden dan respectievelijk:


    ((http://|ftp://)?([a-zA-Z1-9\-_\.]+\.[a-zA-Z1-9\-_]+\.[a-z]{2,3}(/[a-z\-/\._\?=&0-9]+)?))

    en


    ((href=\")([a-zA-Z1-9\-_\.]+\.[a-zA-Z1-9\-_]+\.[a-z]{2,3}(/[a-z\-/\._\?=&0-9]+)?))

    --
    Groet, Ronald

  3. #3
    Jonathan
    [php] regexp
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] regexp

    > >Maar gaat het vaak mis als de url ook nog een querystring heeft.
    > >Bijvoorbeeld:
    > >
    > >http://www.test.com/test.php?forum=30&topic=88
    > >
    > >levert uiteindelijke een linkje op naar
    > >
    > >http://www.test.com/test.php?forum=
    > >
    > >Waarom gaat dit niet goed?

    >
    > Omdat de twee reguliere expressies geen cijfers toelaten in deze
    > querystring. De twee reguliere expressies met toelating van cijfers in
    > de query string worden dan respectievelijk:
    >
    >
    >

    ((http://|ftp://)?([a-zA-Z1-9\-_\.]+\.[a-zA-Z1-9\-_]+\.[a-z]{2,3}(/[a-z\-/\.
    _\?=&0-9]+)?))
    >
    > en
    >
    >
    >

    ((href=\")([a-zA-Z1-9\-_\.]+\.[a-zA-Z1-9\-_]+\.[a-z]{2,3}(/[a-z\-/\._\?=&0-9
    ]+)?))

    Oh ja ik begrijp het. Ik zie dat je ook ? en & hebt toegevoegd. Ik neem aan
    dat ik dan ook het 'domein' van {2,3} moet uitbreiden naar de maximaal
    toegestane lengte van een query string (wat is die eigenlijk? 255 ofzo?)?
    Zou sowieso uitgebreid moeten ivm .info tld's...

    Groeten,
    Jonathan



  4. #4
    Ronald Paul
    [php] regexp
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] regexp

    "Jonathan" <jonathan@nospam-tricolon.com> schreef:

    >Oh ja ik begrijp het. Ik zie dat je ook ? en & hebt toegevoegd.


    Neehoor, die stonden er al, anders had je in plaats van
    http://www.test.com/test.php?forum= alleen maar een link naar
    http://www.test.com/test.php teruggekregen.

    >Ik neem aan
    >dat ik dan ook het 'domein' van {2,3} moet uitbreiden naar de maximaal
    >toegestane lengte van een query string (wat is die eigenlijk? 255 ofzo?)?


    Nee. De quantifier {2,3} staat uitsluitend voor de domeinextensie. De
    quantifier van de query-string is een +, wat 1 of meer betekend.
    Volgens mij had dit eigenlijk een * (0 of meer) moeten zijn, omdat een
    query string ook kan ontbreken. Werkte deze regex wel zonder zo'n
    query string?

    Er is AFAIK nergens een harde grens gelegd voor de maximale lengte van
    een URL, maar met 255 zit je in ieder geval wel het veiligst.

    >Zou sowieso uitgebreid moeten ivm .info tld's...


    Die quantiefier zou daarvoor inderdaad {2,4} moeten worden.

    --
    Groet, Ronald

  5. #5
    Daniel Tryba
    [php] regexp
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] regexp

    Ronald Paul <usenet@rcpaul.nl> wrote:
    >>Zou sowieso uitgebreid moeten ivm .info tld's...

    >
    > Die quantiefier zou daarvoor inderdaad {2,4} moeten worden.


    {2,6} http://www.icann.org/tlds/

    BTW ik snap niet waarom er uberhaupt zoveel moeite wordt gedaan om de
    url te checken, dat kan toch niet met enige zekerheid.

    |((htt|ft)ps?://.*?)\s| lijkt mij voldoende.


    --

    Daniel Tryba


  6. #6
    Jonathan
    [php] regexp
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] regexp


    "Ronald Paul" <usenet@rcpaul.nl> wrote in message
    news5ov3vgj4k8mfieh4rpvriqujoo33vdi1v@4ax.com...
    > "Jonathan" <jonathan@nospam-tricolon.com> schreef:
    >
    > >Oh ja ik begrijp het. Ik zie dat je ook ? en & hebt toegevoegd.

    >
    > Neehoor, die stonden er al, anders had je in plaats van
    > http://www.test.com/test.php?forum= alleen maar een link naar
    > http://www.test.com/test.php teruggekregen.
    >
    > >Ik neem aan
    > >dat ik dan ook het 'domein' van {2,3} moet uitbreiden naar de maximaal
    > >toegestane lengte van een query string (wat is die eigenlijk? 255 ofzo?)?

    >
    > Nee. De quantifier {2,3} staat uitsluitend voor de domeinextensie. De
    > quantifier van de query-string is een +, wat 1 of meer betekend.
    > Volgens mij had dit eigenlijk een * (0 of meer) moeten zijn, omdat een
    > query string ook kan ontbreken. Werkte deze regex wel zonder zo'n
    > query string?
    >
    > Er is AFAIK nergens een harde grens gelegd voor de maximale lengte van
    > een URL, maar met 255 zit je in ieder geval wel het veiligst.
    >
    > >Zou sowieso uitgebreid moeten ivm .info tld's...

    >
    > Die quantiefier zou daarvoor inderdaad {2,4} moeten worden.


    Werkt perfect! Top bedankt!

    Groeten,
    Jonathan



  7. #7
    robert
    [php] regexp
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] regexp

    Daniel Tryba <news_nl.internet.www.server-side@canopus.nl>:
    > |((htt|ft)ps?://.*?)\s| lijkt mij voldoende.


    De \s uitbreiden met een leestekencheck zal geen kwaad kunnen.

    --
    robert

  8. #8
    Daniel Tryba
    [php] regexp
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] regexp

    robert <robert+nl.internet.www.server-side@usenet-h.allyourbass.org> wrote:
    > > |((htt|ft)ps?://.*?)\s| lijkt mij voldoende.

    >
    > De \s uitbreiden met een leestekencheck zal geen kwaad kunnen.


    Was een beetje in de war met wordboundaries

    --

    Daniel Tryba


Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics