login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[php] reguliere expressies.

Offline stenno - 21/10/2005 21:04 (laatste wijziging 21/10/2005 21:05)
Avatar van stennoPHP interesse Beste sitemasters,

Ik heb vanochtend ook al een topic geopend over dit onderwerp. Maar toen ik net nog wat wilde vragen zag ik dat het gesloten was. Dus vandaar weer een topic met als onderwerp reguliere expressies.

Maar mijn vraag is. Ik heb een script dat moet controleren of de goede link is ingevuld.

Het gaat om deze links.

ze beginnen allemaal met:

http://www.kingsofchaos.com/stats.php?id=

en gaan vervolgens verder met 7 willekeurige getallen dus

de hele link is:

http://www.kingsofchaos.com/stats.php?id=xxxxxxx

De x'en zijn getallen 1 t/m 9.

Weet iemand hoe ik een script maakt dat contleert of het eerste gedeelte van de link dit is:

http://www.kingsofchaos.com/stats.php?id=

en, controleert of de laatste 7 karakters getallen van 1 t/m 9 zijn.

uhm als iemand zo vriendelijk is mij te helpen daarbij
denk er dan aan dat het eerste gedeelte natuurlijk ook kan bestaan uit de volgende combinaties:

www.kingsofchaos.com/stats.php?id=
WWW.KINGSOFCHAOS.COM/STATS.PHP?ID=
HTTP://WWW.KINGSOFCHAOS.COM/STATS.PHP?ID=

Graag hulp 

8 antwoorden

Gesponsorde links
Offline Dolfje - 21/10/2005 21:09
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
php: preg_match gebruiken
REGEX: dit is niet zo moeilijk. http://weblogtoolscollection.com/regex/regex.php

met dit lukt het al 
Offline stenno - 21/10/2005 21:12 (laatste wijziging 21/10/2005 21:44)
Avatar van stenno PHP interesse Ok bedankt ben benieuwd.

Ik ga nu aan de slag als het niet wil lukken zal ik wel posten wat ik al heb.

edit 1)

ik heb inmiddels de volgende code:

  1. <?php
  2. if (isset($_POST['verzenden'])){
  3. $string = $_POST['spylink'];
  4. if(preg_match("^(http://www.kingsofchaos.com/stats.php?id=|www.kingsofchaos.com/stats.php?id=|HTTP://WWW.KINGSOFCHAOS.COM/STATS.PHP?ID=|WWW.KINGSOFCHAOS.COM/STATS.PHP?ID=)[1-9]{7}",$string))
  5. { echo "Link is correct !";}
  6. else
  7. { echo "Link is niet correct!";}
  8. } else {
  9. ?>
  10.  
  11. <form method="post">
  12. <input type="text" name="spylink" value="" />
  13. <input type="submit" value="sign up" name="verzenden" />
  14. </form>
  15. <?php
  16. }
  17. ?>


ik krijg alleen deze error :
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\server\apache\Apache2\htdocs\Text1.php on line 4

En kan iemand me zeggen of de expressie van deze code goed is en of ik het nog kan verbeteren zo ja hoe ??
Graag ook uitleg erbij 
Offline Dolfje - 21/10/2005 21:53 (laatste wijziging 21/10/2005 21:54)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
Je hebt opgezocht dus zal ik je helpen:
Dit is het goede antwoord
  1. /^http\:\/\/www\.kingsofchaos\.com\/stats\.php\?id\=[0-9]{1,}$/


Je moet je pattern tussen delimiters plaatsen (hier is dat /)

je moet voor / : . een backspace zetten, zodat het niet als speciale karakter word meegerekend

door niets mee te geven achter de delimiter (bv: /ala/i ) is het automatisch niet-case-intensief (kwee nie hoe het geschreven wordt)

/ala/i dit maakt dat ala case-intensief is.
Offline stenno - 21/10/2005 21:57 (laatste wijziging 21/10/2005 22:02)
Avatar van stenno PHP interesse Dus niet-case-intensief is toch dat het niet uitmaakt of het hoofdletters of kleine letters zijn ??

want als dat zo is dan snap ik het wel in de toekomst

Ps harstikke bedankt voor je goede en snelle hulp

^^ 
edit: Uhm er zijn nog 2 kleinigheidjes de expressie is hoofdlettergevoelig dus case-intensief en je kan http:// niet weglaten omdat hij hem dan fout rekend
Offline Dolfje - 21/10/2005 22:13
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
normaal zonder delimiter is het niet hoofdlettergevoelig
Offline stenno - 22/10/2005 08:02
Avatar van stenno PHP interesse
Uhm nu snap ik het niet meer. Hoe maak ik mijn expressie nu zo dat hij geen onderscheid maakt tussen:

HTTP://WWW.KINGSOFCHAOS.COM/STATS.PHP?ID=

en

http://www.kingsofchaos.com/stats.php?id=

En hoe krijg ik het zo dat je http:// ook weg mag laten ???
Ik heb al een aantal malen gezocht. Maar ik kan niets vinden.

Graag nog 1 keer je hulp

:)
Offline Thomas - 22/10/2005 09:06
Avatar van Thomas Moderator Gebruik de regexp van dolfje en pas deze aan:

  1. /^(http\:\/\/)?www\.kingsofchaos\.com\/stats\.php\?id\=[0-9]{1,}$/i


(...)? voor een optioneel subpatroon
/i voor een case insensitive patroon, zoals dolfje al aangaf (of iig op doelde )

Als je delen er uit wilt halen (naast het alleen maar "matchen"), moet je deze delen in een subpatroon vangen (tussen (...) zetten).
Offline stenno - 22/10/2005 10:10
Avatar van stenno PHP interesse
Ok nu snap ik het !! tussen delimiters ( deze dingen: / /) plus i erachter is voor een case insensitive patroon !!

ok bedankt nu snap ik wel hoe de reguliere expressies in de toekomst werken.

bedankt fangorn^^
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.216s