Ik heb een deel van een php script met daarin de waarde van $url[$i] en als ik dit echo krijg ik de waarde h en t. Ongeacht wat ik invoer voor $url, wat een reeks heeft met een verschillend aantal waarden, is de output h en t.

vb. script



for ($i=0; $i < $num ; $i++) {

if (filter_var($url[$i], FILTER_VALIDATE_URL) === false) 


 {	 
    echo 'linknummer : '. $i . ' heeft de waarde : ' . $url; 
    
    echo '<br><br> ';
    echo ' dit is de waarde van url/i string : ' . $url[$i]; 
    
    echo '<br><br> ';
     
echo "</center>";

}



Wat betekent de waarde h of t hier?

Is dit correct en hoe kan ik er mee omgaan als ik een string of reeks waarde los op URL geldigheid wil testen met FILTER_VALIDATE_URL?
Die h en t zijn waarschijnlijk de eerste 2 letters van je URL die begint met http:// ...

Waarschijnlijk is $url geen array maar een string.
ja klopt.
de vlg is wel een array (dwz is niet geïmplodeerd)


if (filter_var($linkadd[$i], FILTER_VALIDATE_URL) === false) 


volstaat dit om alle ongeldige URL's uit deze array te halen?

Johan West op 03/10/2015 17:39:15

ja klopt.
de vlg is wel een array (dwz is niet geïmplodeerd)


if (filter_var($linkadd[$i], FILTER_VALIDATE_URL) === false) 


volstaat dit om alle ongeldige URL's uit deze array te halen?




Deze code valideerd of het een geldige url is, er zijn tekens die niet geldig zijn in een url. Waarom je de waardes h en t heb is omdat url waarschijnlijk geen array is.

<?php
$str = 'dit is een string';

echo $str[0]; // "d".
echo $str[0], $str[1], $str[2]; // "dit"
echo $str; // "dit is een string"
?>

Wat jouw code doet is niets, het is verkeerd geschreven aangezien filter_var() een volledige url vraagt en krijgt maar 1 karakter dus valideert altijd naar "false".


Johan K op 03/10/2015 18:17:01

[quote="Johan West op 03/10/2015 17:39:15"]
ja klopt.
de vlg is wel een array (dwz is niet geïmplodeerd)


if (filter_var($linkadd[$i], FILTER_VALIDATE_URL) === false) 


volstaat dit om alle ongeldige URL's uit deze array te halen?




Deze code valideerd of het een geldige url is, er zijn tekens die niet geldig zijn in een url. Waarom je de waardes h en t heb is omdat url waarschijnlijk geen array is.

<?php
$str = 'dit is een string';

echo $str[0]; // "d".
echo $str[0], $str[1], $str[2]; // "dit"
echo $str; // "dit is een string"
?>

Wat jouw code doet is niets, het is verkeerd geschreven aangezien filter_var() een volledige url vraagt en krijgt maar 1 karakter dus valideert altijd naar "false".



[/quote]

OK, ik zie nu hoe php hiermee omgaat. Maar ik wil dat mbv FILTER_VALIDATE_URL een array van webadressen wordt doorlopen.

De foute moeten eruitgehaald worden. De gebruiker moet dit opnieuw invullen.


<?php

$urls = [
'http://google.nl',
'http://www.phphulp.nl';,
'http://www.tweakers.net';
];

foreach($urls as $key => $url){
if(filter_var($url, FILTER_VALIDATE_URL)){
$link[] = $url;
$invalidkeys[] = $key;
echo "$url is valid";
} else {
echo "$url is not valid";
}
}

print_r($link);

foreach($invalidkeys as $val){
echo "deze url is ongeldig: {$urls[$val]}";
}
?>
> volstaat dit om alle ongeldige URL's uit deze array te halen?

Neen.

Mogelijk is de werking ondertussen veranderd, maar levert dus false negatives en laat mogelijk gevaarlijke zaken door.

Reageren