Hallo,

Ik wil graag het aantal domeinen tellen in een tekst. In het onderstaande voorbeeld zijn dit 2 stuks.
Echter, de telling werkt niet, blijft op 1 staan. En als ik $i = 0; boven de foreach zet, tel hij alle items (6), terwijl het de bedoeling is dat hij alleen telt als aan de if voldaan wordt (2x).
Wat doe ik fout?


$value = "hallo google.nl hallo hallo www.bing.com hallo";
$array = explode(' ', $value);	
foreach ( $array as $str ) {
	$i = 0;
	if ( filter_var($str, FILTER_VALIDATE_DOMAIN) !== NULL ) {
		$i++;
	}
}	
De regex pakt nu hooguit 1 level van subdomeinen:

forum.phphulp.nl wordt gevonden, maar bij regex.forum.phphulp.nl vindt hij alleen het stuk vanaf "forum".

Je zou de ? moeten vervangen door een * om die ook te vinden.
(ok: er wordt alleen geteld en 2x "forum.phphulp.nl" vinden als er eigenlijk "regex.forum.phphulp.nl" stond, telt ook gewoon door)

Zou het trouwens, als er toch een regex gebruikt wordt, niet eenvoudiger zijn om niet te exploden, maar gewoon preg_match_all te gebruiken?

Anders is er ook weer de mogelijkheid dat na een domeinnaam een <enter> volgt ipv een " " die je dan dus mist.

Reageren