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
 
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
 
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
 
Wo besteht eigentlich der unterschied zwischen explode und string, abgesehen davon, das split veraltet ist?
 
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:
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.
 
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"; 
}
 
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 :-)
 
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 :(
 
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!
 
var_dump($string);
gibt NULL zurück,
print_r($pw1);
print_r($pw2);
geben beide test zurück wie es ja auch sein soll
 
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!
 
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:
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 ?
 
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
 
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:
Zurück
Oben