[php] URLs uit string vissen (regExp)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
edit: Laatste vraag

Ik probeer al een tijdje door middel van Regular Expressions de URLs uit een string te vissen, maar het wil me maar niet goed lukken.. Eerst had ik het zo dat er alleen <a href=""> elementen uit werden gevist, maar ik wil nu alle urls..

probleem is dan alleen nogal, hoe geef je aan wanneer een url afgelopen is ? De bedoeling is uiteindelijk dat wanneer het een <A> element is, de tekst ook nog mee wordt genomen bij de resultArray..

Zoals ik het had
PHP:
1
preg_match_all("|href=\"?([^\"' >]+)|i", $resFile, $arrResult);


Het moet dus in normale taal iets worden als

protocol://www.domein.extensie/sub/sub/ evt. nog (pagina.extensie)

hoe ga ik dit voor mekaar krijgen :S :S

[ Voor 42% gewijzigd door r0bert op 02-05-2003 14:08 ]


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

simpel: stel duidelijk op wat je wil (regels onder elkaar) en zoek dan de syntax
voorbeeld

allemaal karakters
tot ik een \ tegenkom
weer allemaal karakters


en dan later per regel de syntax zoeken

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Ja maar niet iedereen houdt zich zo sterk aan de syntax voor het opstellen van een url

code:
1
Dit is een tekst met de url http://subdomein.domein.nl/dit is een map/ erin


Hoe moet ik die url eruit filteren ?

Acties:
  • 0 Henk 'm!

Verwijderd

dus een beetje als dit:

hallo dit is een http://subdomein.domein.nl linkje :) ???

zo ja, misschien kan je deze v raag opsturen naar de maken van dit forum, of een versie van PHPBB downloaden op phpbb.com en daar de source doorzoeken, zij hebben deze functie ook.

edit:
Glimi: Voor het vermelden van die link kun je je homepage icoon gebruiken hoor :)

[ Voor 19% gewijzigd door Glimi op 01-05-2003 21:48 ]


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Hmmz, ik krijg het totaal niet voor elkaar.. Ik zal het versimpelen naar alleen de urls met quotes, dus..

"http://www.eenadres.nl"
of
"ftp://username:wachtwoord@ftp.eenadres.nl/map/pagina.html"
edit:
"./pagina.php" bijvoorbeeld kan natuurlijk ook

Maar nu kom ik er nog niet :S ik snap er echt de ballen van, kan niet iemand mij een stukje op weg helpen met een voorbeeld of iets ?

[ Voor 11% gewijzigd door r0bert op 02-05-2003 13:00 ]


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Ik heb nu dit:

PHP:
1
2
3
preg_match_all(
"/\"(http|ftp|https|mailto)?\:?([a-zA-Z0-9]|\:|\/|\.|\_)*(\.[a-zA-Z0-9]{2,4}|\/){1}(\?.*)?\"/"
, $resFile, $arrResult);


Ik zelf vind het al aardig wat dat ik zo ver ben gekomen :) maar het werkt nog niet helemaal goed, weet iemand nog wat verbeteringen ?

[ Voor 13% gewijzigd door r0bert op 02-05-2003 13:40 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:59

crisp

Devver

Pixelated

r0bert schreef op 02 May 2003 @ 13:35:
Ik heb nu dit:

PHP:
1
2
3
preg_match_all(
"/\"(http|ftp|https|mailto)?\:?([a-zA-Z0-9]|\:|\/|\.|\_)*(\.[a-zA-Z0-9]{2,4}|\/){1}(\?.*)?\"/"
, $resFile, $arrResult);


Ik zelf vind het al aardig wat dat ik zo ver ben gekomen :) maar het werkt nog niet helemaal goed, weet iemand nog wat verbeteringen ?
ik zou mailto en http(s)/ftp apart behandelen, maakt het weer een stukje eenvoudiger.
Waar wil je de url's uitvissen, en met welk doel? Bedenk dat een url in een href geen absoluut url hoeft te zijn.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Hij moet alle pagina's/links uit een string vissen.. de waarde van die string is afkomstig van de content van een willekeurige webpagina..

Ik heb de mailto er nu maar helemaal uitgehaald, want het voegt verder weinig toe..

Ik zou nu alleen graag de waarde TUSSEN de quotes matchen en in mijn resultaat zetten.. hoe ga ik dat fixen ?

PHP:
1
2
3
preg_match_all(
"/\"(http|ftp|https)?\:?([a-zA-Z0-9]|\:|\/|\.|\_|\%)*(\.(htm|html|asp|php|js|cgi|php3|php4)|\/){1}(\?.*)?\"/"
, $resFile, $arrResult);

Maar dan dus zonder die quotes 8)7

EDIT:
http://www.spiderwebservices.nl/robert/Sitemap/prcPage3a.php
En pagina die ingelezen wordt http://www.spiderwebservices.nl/robert/test.html

[ Voor 90% gewijzigd door r0bert op 02-05-2003 14:05 ]


Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
en klik dan?

Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Hij werkt nu, ik heb haakjes () gezet om het gedeelte wat er 'onthouden' moest worden en dat hielp :)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:59

crisp

Devver

Pixelated

deze komt wel een eind met absolute url's:

PHP:
1
preg_match_all('/(?<=(\s|\'|"))(http(s)?|ftp):\/\/([\w.\/&=?\-~%;]+)(?=\b)/i', $resFile, $arrResult);


:)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Die laatste die ik heb gepost vist zowel absolute als relatieve urls eruit, de relatieve urls vul ik aan met de host url van de oorspronkelijk beginpagina.. dus het werkt allemaal wel, niet helemaal op en top soepel, maar ik ben bang dat het niet beter kan ;)
Pagina: 1