eregi()

Door Arjan Schuurman, 21 jaar geleden, 8.659x bekeken

Uitleg van de functie eregi()

Gesponsorde koppelingen

Inhoudsopgave

  1. eregi()

 

Er zijn 11 reacties op 'Eregi'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jeroen
Jeroen
21 jaar geleden
 
0 +1 -0 -1
simpel en netjes uitgelegd :)
Niels Janssen
Niels Janssen
21 jaar geleden
 
0 +1 -0 -1
Jammer dat eregi vervalt in PHP 6, preg_match word de vervanger.
Legolas
Legolas
21 jaar geleden
 
0 +1 -0 -1
je legt niks uit over de echte RegEx kant, de i in eregi betekent "niet hoofdlettergevoelig" dus het strtolower gedeelte is zinloos en PCRE (preg_*) is vaak sneller en gaat het in z'n geheel vervangen.

Om stukjes string te zoeken in een andere string kun je beter strpos of strstr gebruiken.
The Beeding Clown
The Beeding Clown
21 jaar geleden
 
0 +1 -0 -1
als je alleen wil kijken of een str in een andere str voorkomt kan je beter strpos() gebruiken dan ereg() of de hoofdletter ongevoelige eregi()

De kracht van de ereg() preg_*() functies is idd de REGEX

BV:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

if(eregi("^[a-z0-9._-]{2,}@[a-z0-9._-]{2,}\.[a-z]{2,3}$", "[email protected]"))
{

    echo 'Geldig email adres';
}

else
{
    echo 'Ongeldig email adres';
}


?>
Paul K
Paul K
21 jaar geleden
 
0 +1 -0 -1
Jammer dat eregi vervalt in PHP 6, preg_match word de vervanger.

Gelukkig duurt dat nog lang+alle hosts zullen eerst standaard php 5 doen en als uitbreiding php 6 ;)
Net als nu (vaak = php 4 nu standaard)
Barman V
Barman V
21 jaar geleden
 
0 +1 -0 -1
Een beetje een nutteloze tutorial. Ik mis de kracht van eregi in jouw tutorial. Een goede tutorial is: http://www.phpfreakz.nl/artikelen.php?aid=8
Hierin worden onder andere de tekens (patterns) uitgelegd.
Joeri
Joeri
21 jaar geleden
 
0 +1 -0 -1
Toch wel handig al gebruik ik eerder onderstaande methade:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
function check_Email($email) {
    if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) {
        $host = explode('@', $email); if(checkdnsrr($host[1].'.', 'MX') )
        return true; if(checkdnsrr($host[1].'.', 'A') )
        return true; if(checkdnsrr($host[1].'.', 'CNAME') )
        return true;
    }
    return false;
}


toch korte tut die je eigenlijk op php.net ook wel kan vinden.

Grtz.
The Beeding Clown
The Beeding Clown
21 jaar geleden
 
0 +1 -0 -1
@joeri

In de classes van de patterns hoef je de . niet te escapen, zoals je het nu heb mogen backslashes ook in de email staan, denk niet dat dat de bedoeling is :)
Cees St
Cees St
21 jaar geleden
 
0 +1 -0 -1
Met dit fictieve mailadres [email protected] is

de regex van Nano veel effectiever als die van Joeri, want het aantal keren dat hij de string doorloopt bepaald de perfomance van de regex.

De regex van Nano is in 11 keer klaar

maar de regex van Joeri doet er 52 keer over om te constateren dat er een match is.

De meest korte en effectieve is [\w._%-]+@([\w-]+\.)+[\w]{2,4} = 10X

Groet Cees

Kan nog beter heb ik ondekt, door Nano zijn regex en mijn regex te combineren tot: [\w._%-]{2,}@[\w._%-]{2,}\.[\w]{2,4}
Het is inderdaad verstandig om min. 2 char te verplichten, kan natuurlijk ook groter. Wel de laatste max value op 4 gezet om ook het *.info domain te kunnen gebruiken.
Rudie dirkx
rudie dirkx
21 jaar geleden
 
0 +1 -0 -1
stristr() is sowieso sneller dan eregi() omdat er geen patterns in kunnen (en die gebruik jij toch niet)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Iltar van der berg
iltar van der berg
21 jaar geleden
 
0 +1 -0 -1
wel grappig

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. eregi()

Labels

  • Geen tags toegevoegd.

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.