Aantal items / domeinen tellen werkt niet
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?
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?
Op regel 4 zet je de teller weer op nul.
Als ik em boven de foreach zet, telt die alle woorden.
Ook al zou die alleen +1 moeten tellen als aan if voldaan wordt.
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
Toevoeging op 28/02/2024 18:44:58:
Excuses, te snell gereageerd. Ik krijg het ook niet direct voor elkaar
Toevoeging op 28/02/2024 18:44:58:
Excuses, te snell gereageerd. Ik krijg het ook niet direct voor elkaar
Gooi eens wat echo'tjes als debugging.
Quote:
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
Guido
Ik denk dat een reguliere expressie wel beter zal moeten werken.
Ga ik dat doen, iets als:
Aan de beheerder: de toolbar (tekstopmaak) ontbreekt soms.
Aan de beheerder: de toolbar (tekstopmaak) ontbreekt soms.
Waar en wanneer mist de toolbar dan?
https://ibb.co/6tQLgNW
Print is met m'n iPhone gemaakt. Zoals je bovenaan ziet is de site ook nog steeds via onveilige verbinding te bezoeken.
Guido
Print is met m'n iPhone gemaakt. Zoals je bovenaan ziet is de site ook nog steeds via onveilige verbinding te bezoeken.
Guido
Die heeft nooit in de snel reageren textarea gestaan. Enkel op de losse reply pagina en die voor een nieuw topic. Misschien is het wel praktisch om toe te voegen.
Die SSL zal ik eens naar kijken.
Maar zulke dingen graag in het juiste forum. :-)
Die SSL zal ik eens naar kijken.
Maar zulke dingen graag in het juiste forum. :-)
Gewijzigd op 29/02/2024 00:53:44 door - Ariën -
https://www.php.net/filter_var
Jij zegt:
filter_var zal hier nooit null opleveren. hij geeft een string terug die een domain is OF hij geeft FALSE terug.
Vervang NULL door FALSE en je bent er.
Quote:
Returns the filtered data, or false if the filter fails.
Jij zegt:
filter_var zal hier nooit null opleveren. hij geeft een string terug die een domain is OF hij geeft FALSE terug.
Vervang NULL door FALSE en je bent er.
Quote:
Vervang NULL door FALSE en je bent er.
Had ik al gedaan maar werkte ook niet.
Guido
Ik heb dat ook al achterwege gelaten, maar ik heb het idee dat een reg-ex betrouwbaarder is.
Is dit niet ongeveer wat je zoekt? Je kan het natuurlijk nog helemaal aanpassen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$value = "hallo google.nl hallo hallo www.bing.com hallo";
$array = explode(' ', $value);
$i = 0;
// Lijst van geldige extensies
$geldige_extensies = ['com', 'nl', 'org', 'net']; // Voeg hier alle gewenste extensies toe
foreach ($array as $str) {
// Controleer of het woord lijkt op een geldig domein met een geldige extensie
if (preg_match('/\b(?:www\.)?[a-zA-Z0-9-]+\.(' . implode('|', $geldige_extensies) . ')\b/', $str)) {
$i++;
}
}
echo "Aantal domeinen: " . $i;
?>
$value = "hallo google.nl hallo hallo www.bing.com hallo";
$array = explode(' ', $value);
$i = 0;
// Lijst van geldige extensies
$geldige_extensies = ['com', 'nl', 'org', 'net']; // Voeg hier alle gewenste extensies toe
foreach ($array as $str) {
// Controleer of het woord lijkt op een geldig domein met een geldige extensie
if (preg_match('/\b(?:www\.)?[a-zA-Z0-9-]+\.(' . implode('|', $geldige_extensies) . ')\b/', $str)) {
$i++;
}
}
echo "Aantal domeinen: " . $i;
?>
Thanks! Ik ga een regex gebruiken ipv FILTER_VALIDATE_DOMAIN, want dat lijkt niet goed te werken binnen een foreach.
Guido
Guido
de ellende met zo'n regex is dat je wel even wat moeilijker zijn dan bovenstaande.
ten eerste de steeds uitbreidende lijst van tlds
maar ook houdt deze geen rekening met subdomeinen.
forum.phphulp.nl komt er niet doorheen.
net als namen met andere letters dan a-z köln.de bijvoorbeeld
ten eerste de steeds uitbreidende lijst van tlds
maar ook houdt deze geen rekening met subdomeinen.
forum.phphulp.nl komt er niet doorheen.
net als namen met andere letters dan a-z köln.de bijvoorbeeld
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$value = "hallo google.nl hallo hallo www.bing.com hallo sub.voorbeeld.nl sub.example.com vöörbeeld.nl ïvoorbeeld.nl";
$array = explode(' ', $value);
$i = 0;
// Lijst van geldige extensies
$geldige_extensies = ['com', 'nl', 'org', 'net', 'at']; // Voeg hier alle gewenste extensies toe
foreach ($array as $str) {
// Controleer of het woord lijkt op een geldig domein met een geldige extensie
if (preg_match('/\b(?:[a-zA-Z0-9-]+\.)?[a-zA-Z0-9-\p{L}]+\.(' . implode('|', $geldige_extensies) . ')\b/u', $str)) {
$i++;
}
}
echo "Aantal domeinen: " . $i;
?>
$value = "hallo google.nl hallo hallo www.bing.com hallo sub.voorbeeld.nl sub.example.com vöörbeeld.nl ïvoorbeeld.nl";
$array = explode(' ', $value);
$i = 0;
// Lijst van geldige extensies
$geldige_extensies = ['com', 'nl', 'org', 'net', 'at']; // Voeg hier alle gewenste extensies toe
foreach ($array as $str) {
// Controleer of het woord lijkt op een geldig domein met een geldige extensie
if (preg_match('/\b(?:[a-zA-Z0-9-]+\.)?[a-zA-Z0-9-\p{L}]+\.(' . implode('|', $geldige_extensies) . ')\b/u', $str)) {
$i++;
}
}
echo "Aantal domeinen: " . $i;
?>
Hier werken de subdomeinen en tekens als ö en ï wel
Gewijzigd op 03/03/2024 20:52:03 door Ray Mond




