[PHP] in TXT nach etwas suchen und dann TRUE oder FALSE rückgeben

php

coolsascha
ID: 146779
L
20 April 2006
982
48
Hallo,
ich brauche eine kleine Hilfe. Ich möchte das mein Scripte in eine TXT Datei nach einer Zeichenkette sucht wie "15SAD5". die TXT selbst sieht dann folgendermaßen aus:
4D4SDS
425FDF
S2D54F
54DSF5
15SAD5
DF4523
SDF544
F55875
etc..
Wenn dann die Zeichenkette "15SAD5" gefunden ist, soll einmal TRUE zurückgegeben werden.
Aber im besten Fall, sollte die Zeilennummer auch noch ausgegeben werden, halt bei "15SAD5" z.B. 5.
Und im aller besten Fall (wenn mir da jemand helfen könnte) sollte diese Zeile auch noch gelöscht werden, sodass die TXT danach so aussieht:
4D4SDS
425SDF
S2D54F
54DSF5
DF4523
SDF544
F55875
etc..

Wäre super wenn mir da jemand helfen könnte.. :p
 
file()
array_search()
unset()
implode()
fputs_content()

In der Reihnfolge... ;)
Also hier nunmal:
PHP:
		<tr>
	<td>Punkte bestellen (SMS):<br>
	TEXT<br>
	<?php
	if(isset($_POST['pin'])){
		$pin = $_POST['pin'];
		
	if(strlen($pin) == 5){	
		if(is_numeric($pin)){
			  $datei = file("pin/abc.txt");
			  
echo array_search($pin, $datei);
		
		}else{
			echo "<b>Bitte nur Zahl eingeben!</b>";
		}
	}else{
		echo "<b>Die PIN ist immer 5 Zeichen lang!</b>";
	}
		
	}
	?>
<form method="post" action="shop.php">
	<input name="pin" type="text" style="width: 60px"><input type="submit" value="Code senden" name="send_pin" class="profil"></form>
	</td>
	</tr>
Wenn ich array_search so anwende:
PHP:
echo array_search($pin, $datei);
klappt es nicht!! Nur manuell bekomme ich die Zeile zurückgegeben:

PHP:
echo array_search(21254, $datei);

Was nun?
 
Kommst du bei deiner Lösung überhaupt bis in den inneren Teil der Schleife, wo array_search() aufgerufen wird?

Du könntest beispielsweise mal Debuggen und dir den Inhalt von $pin ausgegeben lassen (z.B. mittels var_dump()).
 
Auf die Zeilenenden achten... da steht nich 556255 sondern 556255\n in dem Array. (oder so ähnlich)
 
Kommst du bei deiner Lösung überhaupt bis in den inneren Teil der Schleife, wo array_search() aufgerufen wird?

Du meinst in den inneren Teil der if-Schleife? :wall:

Anyway, array_search wird kaum rausfinden, wenn die gesuchte Zeichenkette irgendwo mittendrin steht, nur wenn der komplette Wert übereinstimmt...verstanden?
(edit: siehe ZeroCCC^^)
 
Nahja, ich habs nuin auch selbst gelöst..
Wen es interessiert:
PHP:
$filename = 'pin/abc.txt';
$f = file($filename);

// für jede Zeile ...
foreach ($f as $line) {
	if($nr_abc == "") $nr_abc = "1";
    // wenn sie mit $suche beginnt
    if (strpos($line, $pin) === 0) {
        // Zeile ab Ende von $suche ausgeben
        $found_abc = TRUE;
        // Schleife abbrechen ($suche kommt nicht nochmal vor)
        break;
    }
    $nr_abc += 1;
}
Suchen der Zeile

PHP:
function cutline($filename,$line_no=-1) {

$strip_return=FALSE;

$data=file($filename);
$pipe=fopen($filename,'w');
$size=count($data);

if($line_no==-1) $skip=$size-1;
else $skip=$line_no-1;

for($line=0;$line<$size;$line++)
if($line!=$skip)
fputs($pipe,$data[$line]);
else
$strip_return=TRUE;

return $strip_return;
}
Zeile löschen..