PHP Array nach einem Zeichen Sortieren

M

Marcel553

Gast
Hallo,
in dem array $results befindet sich folgender wert: 627169910|marcel553.de.jpg|test
Nun möchte ich dass automatisch das array so aufgebaut wird:
PHP:
Array
(
    [0] => 627169910
    [1] => marcel553.de.jpg
    [2] => test

)
Ich hoffe, das ich schnell eine Antwort kriege :)
MfG
Marcel553
 
S

Suchu

Gast
PHP:
// $resultarray[datenstring] = 627169910|marcel553.de.jpg|test

$split = explode("|", $resultarray[datenstring]);


echo $split[0]; // Ausgabe:  627169910

echo $split[1]; // Ausgabe:  marcel553.de.jpg

echo $split[2]; // Ausgabe: test
 

volcem

Lieutenant
Dabei seit
Dez. 2007
Beiträge
995
Naja split würde ich nicht mehr nutzen, explode ist da schon besser.

@Marcel553

Wenn Du nicht weißt wie viele Einträge vorhanden sind, einfach eine kleine schleife nutzen:

PHP:
//Dein Array->
$string = $row["array"]; // Oder string der generiert wird
$string = explode("|", $string);
foreach($string as $wert) {

echo ''.$wert.'<br>';

}
http://de2.php.net/manual/de/function.explode.php
 

Black_Panter

Ensign
Dabei seit
Mai 2006
Beiträge
197
Wo besteht eigentlich der unterschied zwischen explode und string, abgesehen davon, das split veraltet ist?
 
S

Suchu

Gast
Wo besteht eigentlich der unterschied zwischen explode und string, abgesehen davon, das split veraltet ist?
weiterhin ist explode schneller als split ;)

... Wenn Sie die Fähigkeiten regulärer Ausdrücke nicht benötigen, ist die Verwendung von explode() schneller, weil diese Funktion nicht unter der Last der Engine für reguläre Ausdrücke steht.
Quelle: http://de.php.net/manual/de/function.split.php
 
M

Marcel553

Gast
also ich habs nun so gemacht:
PHP:
$string = $zeile;
$row["array"]; // Oder string der generiert wird 
$string = explode("|", $string); 
foreach($string as $wert) { 

echo ''.$wert.'<br>'; 
}
In $zeile (variable kein array) steht 627169910|marcel553.de.jpg|test
nun gibt er mir auch
PHP:
627169910
marcel553.de.jpg
test
aus. Aber ich weiß nicht, wie ich diese Daten jetzt verwenden kann, da ich sie als Variablen braucht.

Danke Schon Mal :)
MfG
Edit: Habs in dem Array $string steht alles Vielen Dank :)
Edit²: Hab nun ein anderes Problem: Ich will das wenn die id und das passwort richtig ist, dass dan da hi steht, so sieht mein code aus:
PHP:
$id = $_GET['id'];
$pw1 = $_GET['pw'];
$string = $zeile;
$row["array"]; // Oder string der generiert wird 
$string = explode("|", $string); 
foreach($string as $wert) 
$rid = $string[0];
$pw2 = $string[2];
$name = $string[1];
if(( $id == $rid ) AND ( $pass == $pw2))
{
echo "hi";
}
Wenn ich das nur mit der ID mache gehts...
 
Zuletzt bearbeitet:

volcem

Lieutenant
Dabei seit
Dez. 2007
Beiträge
995
Willst Du dass für eine Passwort abfrage nutzen?
Wäre ziemlich unsicher.


Aber versuche es doch mal zu debuggen:

array fängt immer bei 0 an.

627169910|marcel553.de.jpg|test
=> 0|1|2|3

Lass Dir doch mal $pass und $pw2 so ausgeben.

*edit*

Ich sehe gerade, ändere $pass in $pw1 ...
$pass ist nirgends deklariert.
 

cx01

Ensign
Dabei seit
Mai 2010
Beiträge
242
Der Code ist seltsam. So sollte es gehen:
PHP:
$id = $_GET['id'];
$pw1 = $_GET['pw']; 


$string = explode("|", $string);  
$rid = $string[0]; 
$pw2 = $string[2]; 
$name = $string[1]; 

if(( $id == $rid ) AND ( $pw1 == $pw2)) 
{ 
    echo "hi"; 
}
 

volcem

Lieutenant
Dabei seit
Dez. 2007
Beiträge
995
Musste aber noch ein :


PHP:
$string = $zeile;
PHP:
$id = $_GET['id']; 
$pw1 = $_GET['pw'];  
//hier
$string = $zeile;
$string = explode("|", $string);   
$rid = $string[0];  
$pw2 = $string[2];  
$name = $string[1];  

if(( $id == $rid ) AND ( $pw1 == $pw2))  
{  
    echo "hi";  
} else {
echo 'Leider stimmen die Daten nicht überein!';
}
mit rein, da er anscheinend nur copy/paste macht, schreibt er sonst dass es nicht geht :-)
 
M

Marcel553

Gast
Also der ganze Code lautet:
PHP:
<?php
include "config.php";
include "ressourcen.php";
include "head.php";
include "head2.php";

$id = $_GET['id'];
$pw1 = $_GET['pw'];
$lines = file('ausgabet.php'); 
$searchstr = $id; 
foreach ($lines as $line) 
{ 
  if(strpos($line, $searchstr) !== false)
  { 
    $results[] = $line; 
  } 
} 
$zeile = $results[0];
$string = $zeile;
$row["array"]; // Oder string der generiert wird 
$string = explode("|", $string); 
foreach($string as $wert) 
$rid = $string[0];
$pw2 = $string[2];
$name = $string[1];
$dateiname = "$id.$name";
$url = "$webseite$dateiname";
echo "<br>";
echo "Dateiname ohne ID: " . $name;
echo "<br>";
echo "Eingegebene ID: " . $id;
echo "<br>";
echo "Originale ID: " . $rid;
echo "<br>";
echo "URL: " . $url;
echo "<br>";
echo "Dateiname mit ID: " . $dateiname;
echo "<br>";
echo "Eingegebenes Passwort: " . $pw1;
echo "<br>";
echo "Richtiges Passwort: " . $pw2;
echo "<br>"; 
echo "<br>";
if(( $id == $rid ) AND ( $pw1 == $pw2))
{
echo "hi";
}
?>
Wenn ich aber
PHP:
if(( $id == $rid ) AND ( $pw1 == $pw2))
{
echo "hi";
}
in
PHP:
if(( $id == $rid ) AND ( $pw1 == test))
{
echo "hi";
}
ändere geht es wenn ich das pw test nehme :(
 

volcem

Lieutenant
Dabei seit
Dez. 2007
Beiträge
995
Irgend wie erschließt sich der mir der Sinn dahinter.. nu gut,

versuche deinen code mal zu debbugen.

Also einmal:

PHP:
var_dump($string);

Und einmal 

print_r($_GET); // bzw
print_r($pw1) und print_r($pw2);
Und setze vielleicht mal :

PHP:
error_reporting(E_ALL);
Am Anfang Deiner Datei!

Prüfe schritt für schritt was passiert, so kannst Du einen Fehler schnell finden!
 
M

Marcel553

Gast
var_dump($string);
gibt NULL zurück,
print_r($pw1);
print_r($pw2);
geben beide test zurück wie es ja auch sein soll
 

volcem

Lieutenant
Dabei seit
Dez. 2007
Beiträge
995
Ja dann mal doch einfach mal:

PHP:
if ( $pw1 == $pw2) 
{ 
echo 'passt'; 
} else {
echo 'passt nicht!';
}

echo '<p>verglichen wurde '.$pw1.' und '.$pw2.'</p>';
Und wenn dass nicht geht musste mal schauen wo evtl der Fehler ist, einfach code reduzieren und so weit ausgeben wie es geht, wenn Fehler auftritt dann checken!
 
M

Marcel553

Gast
xD nun steht dort:
passt nicht!

verglichen wurde test und test
€dit: Ich hab den Fehler... der liest zwar alles aus aber es geht immernur das passwort von der letzten zeile von ausgabet.php :( weiß wer woran das liegen könnte?

MfG
 
Zuletzt bearbeitet:

volcem

Lieutenant
Dabei seit
Dez. 2007
Beiträge
995
Wird wohl hier dran liegen.
Aber sag mal, dass nicht von Dir geschrieben oder?
PHP:
$searchstr = $id;  
foreach ($lines as $line)  
{  
  if(strpos($line, $searchstr) !== false) 
  {  
    $results[] = $line;  
  }  
}  
//hier
$zeile = $results[0];
Dies gibt die aktuelle Position von $id aus und liefert dann bla|bla|bla
http://php.net/manual/de/function.strpos.php

wie sieht denn die ausgabet.php aus ?
 
M

Marcel553

Gast
so sieht sie aus:
468227024|Penguins.jpg|hi
491052496|Desert.jpg|lol
772844712|Hydrangeas.jpg|hallo
der soll ja auch die gesamte Zeile wo $id drin vor kommt in $zeile packen
 

volcem

Lieutenant
Dabei seit
Dez. 2007
Beiträge
995
PHP:
<?PHP
error_reporting(E_ALL);
include "config.php"; 
include "ressourcen.php"; 
include "head.php"; 
include "head2.php"; 

$id = $_GET['id']; 
$pw1 = trim($_GET['pw']); 
$lines = file('ausgabet.php');  
 
foreach ($lines as $line)  
{  
  if(strpos($line, $id) !== false) 
  {  
    $results[] = $line;  
  }  
}  
$string = $results[0];  
$string = explode("|", $string);  
$webseite = "http://www.domain.de/";
$rid = $string[0]; 
$pw2 = trim($string[2]); 
$name = $string[1]; 
$dateiname = "$id.$name"; 
$url = "$webseite$dateiname"; 
echo "<br>"; 
echo "Dateiname ohne ID: " . $name; 
echo "<br>"; 
echo "Eingegebene ID: " . $id; 
echo "<br>"; 
echo "Originale ID: " . $rid; 
echo "<br>"; 
echo "URL: " . $url; 
echo "<br>"; 
echo "Dateiname mit ID: " . $dateiname; 
echo "<br>"; 
echo "Eingegebenes Passwort: " . $pw1; 
echo "<br>"; 
echo "Richtiges Passwort: " . $pw2; 
echo "<br>";  
echo "<br>"; 
echo "<br>"; 

if($id===$rid  AND $pw1===$pw2) 
{ 
echo "passt"; 
}  else {
echo 'hier stimmt was nicht!';
}
?>
Nächste mal bitte selbst debuggen. ;)
Hab dass mal auf meinem Server getestet und geht nu.

Es lag daran dass irgend wo bei $pw ein Leerzeichen vorhanden war, so dass der String niemals gleich sein konnte. trim() entfernt alle Leerzeichen.

der soll ja auch die gesamte Zeile wo $id drin vor kommt in $zeile packen
Nun hat er ja getan, hättest Du Dir angeschaut was geliefert wird, hättest Du es gesehen!
 
Zuletzt bearbeitet:
Top