Dit is een topic in Community » Forum » Pro » Web ontwikkeling

[PHP] preg_match kort de match in

The JM

The JM op 04 januari 2010 #

Ik wil het domein van een url krijgen, hiervoor maak ik gebruik van een preg_match. Maar het domein dat uit de matches komt is ingekort. De code is als volgt: $url = "http://google.nl"; preg_match("/^(http://|https://|)[a-zA-Z-]([^/]+)/i", $url, $matches); print_r($matches); Dit geeft als resultaat: Array ( [0] => http://google.nl [1] => http:// [2] => oogle.nl ) Waarom is $matches[2] "oogle.nl" en niet "google.nl"?

Martens

Martens op 04 januari 2010 #

preg_match('/^https?://(.*)//i', $url, $matches); Deze doet volgens mij wat je wil. Edit: en het antwoord op je vraag: dat komt door de [a-zA-Z-].

The JM

The JM op 04 januari 2010 #

Bedankt voor je bericht, maar ik denk niet dat die doet wat ik wil. Hij retourneert een lege array

The JM

The JM op 04 januari 2010 #

Ah, ik lees je edit nu pas. Hij werkt! Bedankt. Voor de rest die het ooit nog s nodig denkt te hebben, dit is 'm: preg_match("/^(http://|https://|)([^/]+)/i", $url, $matches);

sturb op 04 januari 2010 #

Ik neem aan dat je de functie parse_url() kent....

tinus_omt op 04 januari 2010 #

Het probleem waar je naar refereert is: - Met de haakjes geef je aan welke stukjes van het origineel je wilt bewaren. - Je hebt de code voor de eerste hoofd- of kleine letter ( [a-zA-Z-] ) niet tussen de haakjes voor de tweede match gezet. - Het is natuurlijk ook niet helemaal goed om te eisen dat het eerste teken een letter of een streepje is terwijl de rest alles behalve een / mag zijn. Het eigenlijke probleem is echter dat je zelf probeert een behoorlijk complexe standaard te implementeren met een simpele reguliere expressie. Dat gaan niet, het kan wel met reguliere expressies maar dan wordt het niet simpel. Je gaat bijvoorbeeld de mist in als er in de url een usercode is meegegeven ( http://usercode@domein.com/ ). Het is beter de functie te gebruiken die ingebouwd is in PHP om te doen wat je probeert: parse_url Dan hoef je zelf al die moeite niet te doen en kun je iemand anders de schuld geven als het niet werkt

The JM

The JM op 04 januari 2010 #

Sjongejonge...Heb ik zo m'n best gedaan op die reg exp :P Staat er in de comments van de pagina van parse_url ook nog een functie om de host van een URL te krijgen...Handig! In ieder geval bedankt voor de reacties!

b@dk

b@dk op 04 januari 2010 #

Mag ik je een tip geven (ondanks het feit dat je probleem al is opgelost?) http://www.txt2re.com/index-php.php3?s= Scheelt zeeën van tijd! :D

The JM

The JM op 04 januari 2010 #

Die zet ik tussen mijn bladwijzers! Bedankt!

Je kunt alleen reageren met een gratis OMT account.
Log in of registreer.

Inloggen

Over dit topic

Gestart op 04 januari 2010 door The JM

Laatste reactie door The JM

Reageer op dit topic