login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Regex URL

Offline Webtijn - 26/12/2006 12:43
Avatar van WebtijnPHP interesse Goedenmiddag Sima's,

Ik ben met een nieuw scriptje bezig, en hierbij moet ik uit een string de URL's halen. Bijvoorbeeld:

  1. $String = "Mijn website is http://www.mijnwebsite.nl/ en die van jou is http://www.jouwebsite.nl/";
  2.  
  3. echo $Joursite;
  4. echo $Minesite;


Hoe kan ik dit doen? Ik heb het geprobeerd met preg_match_all, maar als ik ergens slecht in ben dan is het wel regex.. is hier iemand die er meer verstand van heeft of weet hoe ik dit anders kan doen?

Bij voorbaad dank,
Martijn

8 antwoorden

Gesponsorde links
Offline marten - 26/12/2006 13:00
Avatar van marten Beheerder heb je al op www.regular-expressions.com gekeken? Daar staan veel tutorials en voorbeelden over de regex functies
Offline Meaux - 26/12/2006 13:03
Avatar van Meaux Nieuw lid <?
$pieces = explode(' ',$String);
$i = 0;
while(isset($pieces[$i]))
{
if(eregi("^http://",$pieces[$i]))
{
$site[] = $pieces[$i];
}
$i++;
}

$j = 0;
while(isset($site[$j]))
{
echo $site[$j]."<BR>";
$j++;
}
?>
Offline Simon - 26/12/2006 13:04
Avatar van Simon PHP expert
  1. [code]
tags aub[/code]
Offline Ibrahim - 26/12/2006 13:04 (laatste wijziging 26/12/2006 13:12)
Avatar van Ibrahim PHP expert Meaux, waarom geen regex? Dit duurt dus echt veel langer, en het is nutteloos

ik weet niet of deze goed is, want er zijn meerdere tekens toegestaan in een url. Maar hier:

  1. <?php
  2. '~(?:http://)?(?:www\.)?)([a-zA-Z0-9\-]+)\.[a-z]{2,4}~'
  3. ?>


Ik ben nog leerling in de wereld van de reguliere expressies, dus don't be hard on me 
nu is http://www. optioneel
en als je bijv alleen de site (sitemasters in www.sitemasters.be) eruit wilt filtreren, kun je backreferences gebruiken.
Offline Webtijn - 26/12/2006 15:57
Avatar van Webtijn PHP interesse Ik was inderdaad op zoek naar een reguliere expressie, vandaar de topictitel. Siliecom, je helpt me een grote stap op weg, maar heb je het zelf ook al getest? Bij mij geeft hij namelijk een foutje 
Offline Ibrahim - 26/12/2006 19:53 (laatste wijziging 26/12/2006 20:09)
Avatar van Ibrahim PHP expert ik heb hem getest ja

  1. <?php
  2. $string = 'Mijn website is http://www.mijnwebsite.nl/ en die van jou is http://www.jouwebsite.nl/';
  3.  
  4. preg_match_all('~(?:http://)?(?:www\.)?)([a-zA-Z0-9\-]+)\.[a-z]{2,4}~', $string, $resultaten);
  5.  
  6. echo '<pre>', var_dump( $resultaten), '</pre>';
  7. ?>


en check de output 

EDIT: dankzij stijn kwam ik erachter dat er ook 6 letters als extensie bestaat dus moet je {2,4} vervangen met {2,6}
Offline Webtijn - 26/12/2006 23:34
Avatar van Webtijn PHP interesse @Siliecom14

Citaat:
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: unmatched parentheses at offset 22 in C:WebserverRootindex.php on line 4


Weet je zeker dat je hem getest hebt?
Offline Ibrahim - 27/12/2006 00:07 (laatste wijziging 27/12/2006 00:08)
Avatar van Ibrahim PHP expert Ooh ik zie het probleem al 

  1. <?php
  2. $string = 'Mijn website is http://www.mijnwebsite.nl/ en die van jou is http://www.jouwebsite.nl/';
  3. // bij (?:www\.)? was er achter die 2e ? een haakje teveel
  4. preg_match_all('~(?:http://)?(?:www\.)?([a-zA-Z0-9\-]+)\.[a-z]{2,4}~', $string, $resultaten);
  5.  
  6. echo '<pre>', var_dump( $resultaten), '</pre>';
  7. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.224s