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++;
	}
}	
Als ik em boven de foreach zet, telt die alle woorden.
Ook al zou die alleen +1 moeten tellen als aan if voldaan wordt.
Excuses, te snell gereageerd. Ik krijg het ook niet direct voor elkaar

[size=xsmall]Toevoeging op 28/02/2024 18:44:58:[/size]

Excuses, te snell gereageerd. Ik krijg het ook niet direct voor elkaar
Gooi eens wat echo'tjes als debugging.
Gooi eens wat echo'tjes als debugging.


Hij telt voor zover ik kan nagaan alleen de laatste overeenkomst. Daarom blijft teller op 1 staan. Ben er nog niet achter hoe ik dat kan fixen.
Ik heb het idee dat FILTER_VALIDATE_DOMAIN niet doet wat je ervan zou verwachten.....
Je hebt ws gelijk, als ik onder de foreach een if met bv preg_match() toevoeg werkt de teller wél correct. Vaag.

Guido
Ik denk dat een reguliere expressie wel beter zal moeten werken.
Ga ik dat doen, iets als:

preg_match("/[A-Za-z0-9.-]+\.[A-Za-z]{2,64}/", $str))


Aan de beheerder: de toolbar (tekstopmaak) ontbreekt soms.
Waar en wanneer mist de toolbar dan?

Reageren