Aantal items / domeinen tellen werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Guido  -

Guido -

28/02/2024 16:43:33
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$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++;
    }
}    
 
PHP hulp

PHP hulp

20/05/2024 14:50:36
 
Adoptive Solution

Adoptive Solution

28/02/2024 18:15:40
Quote Anchor link
Op regel 4 zet je de teller weer op nul.
 
Guido  -

Guido -

28/02/2024 18:27:11
Quote Anchor link
Als ik em boven de foreach zet, telt die alle woorden.
Ook al zou die alleen +1 moeten tellen als aan if voldaan wordt.
 
Adoptive Solution

Adoptive Solution

28/02/2024 18:44:54
Quote Anchor link
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
 
- Ariën  -
Beheerder

- Ariën -

28/02/2024 19:25:25
Quote Anchor link
Gooi eens wat echo'tjes als debugging.
 
Guido  -

Guido -

28/02/2024 21:39:29
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

28/02/2024 21:46:14
Quote Anchor link
Ik heb het idee dat FILTER_VALIDATE_DOMAIN niet doet wat je ervan zou verwachten.....
 
Guido  -

Guido -

28/02/2024 23:17:59
Quote Anchor link
Je hebt ws gelijk, als ik onder de foreach een if met bv preg_match() toevoeg werkt de teller wél correct. Vaag.

Guido
 
- Ariën  -
Beheerder

- Ariën -

28/02/2024 23:31:06
Quote Anchor link
Ik denk dat een reguliere expressie wel beter zal moeten werken.
 
Guido  -

Guido -

28/02/2024 23:37:26
Quote Anchor link
Ga ik dat doen, iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
preg_match("/[A-Za-z0-9.-]+\.[A-Za-z]{2,64}/", $str))


Aan de beheerder: de toolbar (tekstopmaak) ontbreekt soms.
 
- Ariën  -
Beheerder

- Ariën -

28/02/2024 23:43:50
Quote Anchor link
Waar en wanneer mist de toolbar dan?
 
Guido  -

Guido -

29/02/2024 00:05:09
Quote Anchor link
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
 
- Ariën  -
Beheerder

- Ariën -

29/02/2024 00:51:57
Quote Anchor link
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. :-)
Gewijzigd op 29/02/2024 00:53:44 door - Ariën -
 
Ivo P

Ivo P

29/02/2024 09:00:06
Quote Anchor link
https://www.php.net/filter_var

Quote:
Returns the filtered data, or false if the filter fails.


Jij zegt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ( filter_var($str, FILTER_VALIDATE_DOMAIN) !== NULL ) {
        $i++;
    }

?>


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.
 
Guido  -

Guido -

29/02/2024 20:08:23
Quote Anchor link
Quote:
Vervang NULL door FALSE en je bent er.


Had ik al gedaan maar werkte ook niet.

Guido
 
- Ariën  -
Beheerder

- Ariën -

29/02/2024 23:04:13
Quote Anchor link
Ik heb dat ook al achterwege gelaten, maar ik heb het idee dat een reg-ex betrouwbaarder is.
 
Ray Mond

Ray Mond

02/03/2024 23:14:12
Quote Anchor link
Is dit niet ongeveer wat je zoekt? Je kan het natuurlijk nog helemaal aanpassen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
?>
 
Guido  -

Guido -

03/03/2024 00:11:03
Quote Anchor link
Thanks! Ik ga een regex gebruiken ipv FILTER_VALIDATE_DOMAIN, want dat lijkt niet goed te werken binnen een foreach.

Guido
 
Ivo P

Ivo P

03/03/2024 10:09:49
Quote Anchor link
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
 
Adoptive Solution

Adoptive Solution

03/03/2024 12:42:15
 
Ray Mond

Ray Mond

03/03/2024 20:40:55
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
?>


Hier werken de subdomeinen en tekens als ö en ï wel
Gewijzigd op 03/03/2024 20:52:03 door Ray Mond
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

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.