Frågan 26 maj 2004 14:22 #1 Hej jag skulle behöva hjälp med en preg_replace kod
Här är funktionen och om ni skulle kunna hjälpa mig med preg så är det bra (kan inte preg koderna)
Här är koden som sparar värdena i textfilen, så att ni får inblick i hur det ser ut i textkoden
function ban(){
$msg = $_GET['ip'] . "|\n";
$fp = fopen("ban.txt","r+");
fwrite($fp, $msg);
fclose($fp);
header("Location: admin.php");
exit;
}
Och här är funktionen som ska ta bort ett visst ip (som finns i $_GET['ip'])
//Ta bort ban
function TaBortBan($i){
$fp = fopen('ban.txt', 'r');
$content = fread($fp, filesize('gastbok.txt'));
fclose($fp);
$content = preg_replace("PREG KODEN", "", $content);
$fp = fopen('ban.txt', 'w');
fwrite($fp, $content);
fclose($fp);
header("Location: admin.php");
exit;
}
Har provat
$content = preg_replace("/^{$_GET['ip']}.*?\n/m", "", $content);
Men problemet är att den tar bort alla ip'n d.v.s. tömmer hela textfile
Tack på förhand
lunne82 Medlem sedan dec. 2003 153 inlägg Är det medvetet som du öppnar ban.txt och läser in storleken av guestbook.txt?
$fp = fopen('ban.txt', 'r');
$content = fread($fp, filesize('gastbok.txt'));
Hur som helst. Om du inte är i behov av mönsterpassning ska du använda str_replace() istället. Borde bli enklare då.
PHP Manualen skrev:
If you don't need fancy replacing rules (like regular expressions), you should always use this function instead of ereg_replace() or preg_replace().
Har nu
//Ta bort ban
function TaBortBan($i){
$fp = fopen('ban.txt', 'r');
$content = fread($fp, filesize('gastbok.txt'));
fclose($fp);
$ip = $_GET['ip'];
$content = str_replace($ip, "", $content);
$fp = fopen('ban.txt', 'w');
fwrite($fp, $content);
fclose($fp);
header("Location: admin.php");
exit;
}
Men den vägrar ta bort ip't...jag vet att den inte tar bort |\n men detta är för att testa...Har testat massor med gånger och den tar bort |\n men den vägrar ta bort ip't...Varför?
lunne82 Medlem sedan dec. 2003 153 inlägg Du kan ju börja med att byta ut
$content = fread($fp, filesize('gastbok.txt'));
mot
$content = fread($fp, filesize('ban.txt'));
funkar fortfarande inte?
nope, den tar bara bort |\n
function TaBortBan($i){
$fp = fopen('ban.txt', 'r');
$content = fread($fp, filesize('ban.txt'));
fclose($fp);
$ip = $_GET['ip'];
$content = str_replace("{$ip}|\n", "", $content);
$fp = fopen('ban.txt', 'w');
fwrite($fp, $content);
fclose($fp);
header("Location: admin.php");
exit;
}
har även provat
$content = str_replace($ip."|\n", "", $content);
lunne82 Medlem sedan dec. 2003 153 inlägg Tycker inte det skulle behövas, men testa byta
$ip = $_GET['ip'];
mot
$ip = strip_slashes($_GET['ip']);
Annars kan du skriva
var_dump($_GET);
exit;
som första rad i funktionen TaBortBan() för att testa vad det är för värden, och vilken typ de är, i $_GET när du anropar den. På så sätt kan du se vad som finns i index 'ip' och själv kolla om det stämmer eller om det är fel någon annan stans.
fixade med
$content = preg_replace("/^{$_GET['i']}.*?\n/m", "", $content);
tack ändå :)
lunne82 skrev:
PHP Manualen skrev:
If you don't need fancy replacing rules (like regular expressions), you should always use this function instead of ereg_replace() or preg_replace().
:birp :birp
Bara jag fick en lösning så ;)
lunne82 Medlem sedan dec. 2003 153 inlägg Steg 1: Få det att funka.
Steg 2: Optimera.
:birp