Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Explode Problem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Explode Problem


 
DuRoX
09-06-2003, 22:44 
 
Hallo Leute!

der Variable $check[badsites] steht folgendes:

Website1.de;Website2.de;Website3

wie ich die Semikolons entferne, habe ich herausgefunden: Mit explode($check[badsites],";"); Wenn ich jetzt Website 1 haben will, mache ich: $check[badsites][0];

Prob:

Ich habe eine andere Variable namens $host, wie kann ich jetzt eine IF Schleife machen, die folgendes behandelt:

if($host == "irgendeine website von $check[badsites]) { exit; }

Ansatz: Kann man das mit is_array machen?


cYa DuRoX

 
CannabisCow
09-06-2003, 22:53 
 
Z.B.

for ($i = 0; $i < count($check['badsites']); $i++)
{

if($host == $check['badsites'][$i])
{
echo "d";
exit();

}

}

 
mrhappiness
09-06-2003, 23:00 
 
$check['badsites']='Website1.de;Website2.de;Website3;';
$check['badsites']=explode(';',$check['badsites']); //array draus machen
if (in_array($host,$check['badsites']))
echo 'gefunden';Ansatzantwort: wie man sieht :)

 
DuRoX
10-06-2003, 08:47 
 
Hallo mrhappiness & CannabisCow!

@ CannabisCow: Ich habe deine Lösung versucht (explode noch eingefügt), komme aber leider immer wieder zu folgendem Fehler:

Arrayt-online.de
Array
Warning: Bad message number in /XX/check.php on line 88

Warning: Bad message number in /XX/check.php on line 111


Den Code habe ich folgendermaßen modifiziert:

for ($i = 0; $i < count($check['badsites']); $i++)
{
$check['badsites']=explode(';',$check['badsites']); //array draus machen
if($von == $check['badsites'][$i])
{
echo "d";
exit();
}
else { echo $von."<br>".$check[badsites];}
}


@ mrhappiness: Obwohl ich deine Lösung eigentlich bevorzuge, funzt diese gar nicht. Es kommt zu keiner Fehlermeldung - aber leider auch zu keiner Ausgabe von "GEFUNDEN" ;)

Woran könnte das liegen?

cYa DuRoX

 
DuRoX
10-06-2003, 19:35 
 
Oder gibt es evtl. eine andere Möglichkeit dieses Problem zu lösen?

Ich wäre für jede Hilfe dankbar!

cYa DuRoX

 
Hopka
10-06-2003, 19:50 
 
explode wird übrigens so verwendet: explode(";", $check[badsites]);Hier nachzulesen: http://php.net/explode

 
DuRoX
10-06-2003, 20:09 
 
@ Hopka: Vielen Dank für den Hinweis, aber ich glaube nicht dass es daran liegt / gelegen hat.

cYa DuRoX

 
Hopka
10-06-2003, 20:17 
 
hmm, ok, um mal deinen Code zu verwenden:
$check['badsites']=explode(';',$check['badsites']); //array draus machen
for ($i = 0; $i < count($check['badsites']); $i++)
{
if($von == $check['badsites'][$i])
{
echo "d";
exit();
}
else { echo $von."<br>".$check[badsites];}
}

Du musst den Array natürlich machen, bevor du die Anzahl der Elemente von eben diesem Array mit count zählst.

 
DuRoX
10-06-2003, 21:33 
 
Das Array ist aus einem mysql_fetch_array entstanden, das ist doch ein Array, oder etwa nicht?

cYa DuRoX

 
mrhappiness
10-06-2003, 21:38 
 
gib das array ma bitte aus mit print_r($check);

 
Hopka
10-06-2003, 21:47 
 
aus dem mysql_fetch_array entsteht das Array $check
aber du musst aus aus dem Strin $check['badsites'] noch ein Array mit den einzelnen Elementen machen, die durch ; getrennt sind. Das ist dann ein Unter-Array von $check

 
DuRoX
11-06-2003, 13:00 
 
Hmm verstehe ich nicht... Etwa so?

array($check['badsites']);

Entsteht das Array net durch den Explode?! Denn da mache ich doch die ; Weg :dontknow:

cYa DuRoX

 
Hopka
11-06-2003, 13:07 
 
mysql_fetch_array(....) ergibt ein Array, etwa so:

$ckeck = Array ("key1" => "wert1, "key2 => "wert2", "badsites" => "Website1.de;Website2.de;Website3.de;");

Wenn du dann ein explode(";", $check['badsites']); machst, kommt noch ein Array raus:

$check['badsites'] = Array ("Website1.de", "Website2.de", "Website3.de", "");

also insgesamt etwa so:

$check = Array(
"key1" => "wert1",
"key2" => "wert2",
"badsites" => Array ("Website1.de", "Website2.de", "Website3.de", "")
);

das letzte Element "" im Array $ckeck['badsites'] ist da, weil am Ende ein ; stand, bin mir aber nicht ganz sicher.

Ansprechen kannst du das ganze folgendermaßen:

$check['badsites'][0] = "Website1.de";
$check['badsites'][1] = "Website2.de";
$check['badsites'][2] = "Website3.de";

 
DuRoX
11-06-2003, 19:12 
 
@ Hopka: Vielen Dank für deine ausführliche Antwort! Das ist dann also ein Array im Array :confused:

Das Problem ist aber nicht manuell auf die Website zuzugreifen, sondern ein weiteres Script ausführen mit exit; zu verhindern, wenn $host == "eine der websites im array" ist.

cYa DuRoX

 
Hopka
11-06-2003, 21:05 
 
aha.

und wo genau ist da das problem ?

 
DuRoX
11-06-2003, 21:18 
 
eine der websites im array in PHP Code zu fassen ;)

 
Hopka
11-06-2003, 21:25 
 
schreib am besten mal auf hochdeutsch, was du genau möchtest.
eine der websites im array in PHP Code zu fassen
ich hab keine Ahnung, was du meinst, willst du die Websites kopieren in PHP oder was?

 
mrhappiness
11-06-2003, 21:29 
 
in_array sollte auf jeden fall gehen (so wie oben schongeschrieben)

poste halt mal das array das du durchsuchst (print_r)

 
DuRoX
12-06-2003, 17:07 
 
@ mrhappiness:

Danke für deine Antwort! Wie gesagt, deine Lösung fand ich auch am elegantesten. Also hier ist die Ausgabe, die print_r($check) ausgibt

Allerdings habe ich die Felder in denen Passwörter und sonstige empfindliche Daten stehen entfernt ;)

Array ( [0] => 1055358122 [lastupdate] => 1055358122 [1] => 1 [dovalidate] => 1 [2] => 0 [interval] => 0 [3] => [badsites] => [4]

Es kommt keine Ausgabe von "Gefunden" :(

cYa DuRoX

@ Hopka: Ich glaube schon, dass ich durchaus in der Lage bin hochdeutsch zu sprechen!

 
mrhappiness
12-06-2003, 20:47 
 
ich seh da keine seiten, auf die er prüfen könnte? :confused:

 
DuRoX
13-06-2003, 14:01 
 
Hallo mrhappiness!

Es funzt jetzt mit deiner Lösung! *freu*

Vielen Dank!!! :)


cYa DuRoX


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:37 Uhr.