Toon posts:

[php] url converteren?

Pagina: 1
Acties:

Verwijderd

Topicstarter
is het mogelijk om dit allemaal om te zetten naar http://

bv

members.iets.com
blaat.com/iets
www.iets.com/bla
www.iets.info

etc? en dan gaat het vooral om blaat.com etc?

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
ligt eraan wat je precies onder een url wilt rekenen. als je dat eenmaal hebt vastgesteld moet het niet zo moeilijk zijn om er een of meerdere regexen van te maken.

een voorbeeld: bij www.blaat.com is wel vrij duidelijk dat het om een url gaat, maar bij blaat.net of asp.net niet :)

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 17:39
Moet die blaat.com ook een www erbij krijgen? (het kan soms/vaak ook anders).

Dus:

http://blaat.com of
http://www.blaat.com...
Je kan het doen met regexpen. Ook een explode met wat ifjes zou het kunnen doen.
Oppassen dat bijvoorbeeld https:// of ftp:// niet veranderd wordt!

Verbouwing


  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 04-08 13:06

GraasGast

Analogue Heaven

Maar wat wil je nou precies?

je wil dat als er blaat.com/iets in de database staat, dat dat dan een link word het http:// ervoor automatisch oid?

iets duidelijker mag best :|

Verwijderd

php heeft een functie parse_url, dat is waarschijnlijk wat je zoekt:
http://www.php.net/manual/en/function.parse-url.php

  • flat
  • Registratie: Mei 2000
  • Niet online
ik snap er ook niet veel van
maar als je bedoelt wat ik denk dat je bedoelt: ja, dat kan

maar 't zou fijn zijn als je 't ff wat duidelijker uitlegde

"Happiness is a way of travel, not a destination."
--Roy Goodman


Verwijderd

Topicstarter
ik wil indien mogelijk alle url's die mogelijk zijn filteren om bv uit een text te verwijderen, deze urls kunnen zoals standaard url's http:// bevatten maar ook members.home.nl of test.mijnhost.com (de url's wil ik dus filteren)..

maar denk dat dat heel moeilijk gaat worden tenzij je gaat kijken naar .tjes en /jes.

Verwijderd

Topicstarter
bv
ik ben aan het fietsen op www.test.com en kom
opeens een members.home.nl tegen die verwijst
mij naar tweak.to/ps en daar vind ik de sleutel
tot dit vage www.ik.verhaal.com
dus meot ie alles filteren (dus ook de mogelijkheid geven tot converteren tot url of omzetten tot "")
ik ben aan het fietsen op www.test.com en kom
opeens een members.home.nl tegen die verwijst
mij naar tweak.to/ps en daar vind ik de sleutel
tot dit vage www.ik.verhaal.com
alles [ b ] moet dus veranderbaar zijn ;)

Verwijderd

sjees, lees mijn voorgaande reply eens ? :D + :(
8)7 :P

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Verwijderd schreef op 24 september 2002 @ 22:12:
maar denk dat dat heel moeilijk gaat worden tenzij je gaat kijken naar .tjes en /jes.
Lijkt mij toch de enige oplossing. Kijk of een . aan 2 kanten tekst heeft (minimaal 2 letters zelfs) en dan kun je er een link van maken.
Alleen de regex zul je zelf moeten verzinnen, heb ik ff geen tijd voor.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Verwijderd schreef op 24 september 2002 @ 22:27:
sjees, lees mijn voorgaande reply eens ? :D + :(
8)7 :P
ik denk niet dat parse_url voor xtentic's probleem erg nuttig is

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Met als uitgangspunt blaat.com zou je een regex kunnen maken die op alle TLD's checkt. (.com, .org, .nl, .uk, etc.) Die zou je dan universeel kunnen toepassen (op alle url's dus).

Anders zal je net zoals op GoT met ubb code moeten werken.

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 04-08 13:06

GraasGast

Analogue Heaven

ideetje:

PHP:
1
$str = preg_replace("/(http:\/\/|)((\w+\.)+\w{2,4}(\/[\w\.]*)*)/", "<a href=\"http://$2\">$0</a>", $str);


Pakt oa:
http://blaa.com > link ongewijzigd
http://www.blaa.com > ook ongewijzigd
www.blaa.com > automatisch http:// ervoor
www.blaa.com/bla/bla/bla.php > same story
members.home.nl > ja die ook :)


eventueel kan je dat laatste \w{2,4} nog vervangen voor een lijst van geldige TLD's, nu kijkt hij dus alleen of die tussen de 2 en 4 tekens lang zijn.

edit 1: www.bla.com/bla/bla.php > dat pakt hij nu ook (vergeten)

edit 2: zoals je kan zien aan de linkjes hierboven, lijkt het alsof got precies hetzelfde doet :)

edit 3: hmm...got dus alleen als er http of www voor staat...

[ Voor 0% gewijzigd door GraasGast op 25-09-2002 00:23 . Reden: path update ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Gewoon UBB kiezen. Laat gebruikers maar eens wat werk doen en een duidelijke syntax aanhouden. Als jij een duidelijke syntax formuleert, dan kun je daar beter tegenaan programmeren ( dmv checks ) en heb je je model eerst goed opgezet.

Daarna kan je altijd kijken of zulke zut mogelijk is binnen je syntax als suiker.

Verwijderd

Topicstarter
:D Graasgast, mag ik je alvast bedanken en natuurlijk iedereen die heeft gereageerd, ik ga er vanvavond naar kieke :)

  • tanzu
  • Registratie: Maart 2002
  • Laatst online: 20-06-2023
Ha, ik zocht pas terug naar iets wat dit kan. Ik heb het ook gevonden (ook voor mail adressen), Ik heb het een beetje aangepast, maar het respect gaat natuurlijk uit naar de maker van de functie, (unknown individual...):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function txttolinx ($data) {
  if(empty($data)) {
    return $data;
  }

  $lines = explode("\n", $data);

  while (list ($key, $line) = each ($lines)) {

    $line = eregi_replace("([ \t]|^)www\.", " http://www.", $line);
    $line = eregi_replace("([ \t]|^)ftp\.", " ftp://ftp.", $line);
    $line = eregi_replace("(http://[^ )\r\n]+)", "<a href=\"\\1\" class=\"texturl\" target=\"_blank\">\\1</a>", $line);
    $line = eregi_replace("(https://[^ )\r\n]+)", "<a href=\"\\1\" class=\"texturl\" target=\"_blank\">\\1</a>", $line);
    $line = eregi_replace("(ftp://[^ )\r\n]+)", "<a href=\"\\1\" class=\"texturl\" target=\"_blank\">\\1</a>", $line);
    $line = eregi_replace("([-a-z0-9_]+(\.[_a-z0-9-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)+))", "<a href=\"mailto:\\1\" class=\"texturl\" >\\1</a>", $line);

    if (empty($newText))
      $newText = $line;
    else
      $newText .= "\n$line";
  }

  return $newText;
}


Dit zorgt voor mail adressen, ftp, http, https.

just never give up.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

code:
1
([ \t]|^)

Let op dat die ^ in dit voorbeeld staat voor begin regel. Als je dus een string hebt die langer is dan 1 regel, en (mijn voorkeur) pcre* gebruikt, gaat dat enkel op wanneer je de 'm' modifier toevoegdt (multiline modus). Zie de Pattern Modifiers in bovenstaande link.

Kortom, je kunt die subexpressie dan beter vervangen door (\s|^), waar \s staat voor 'Whitespace charachter' en ^ voor 'Begin character sequence'

*) pcre = perl compatible regular expressions

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1