webForumDet fria alternativet

preg_replace

9 svar · 352 visningar · startad av kobranturre

kobranturreMedlem sedan maj 2004602 inlägg
#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

lunne82Medlem sedan dec. 2003153 inlägg
#2

Ä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().

kobranturreMedlem sedan maj 2004602 inlägg
#3

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?

lunne82Medlem sedan dec. 2003153 inlägg
#4

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?

kobranturreMedlem sedan maj 2004602 inlägg
#5

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);

lunne82Medlem sedan dec. 2003153 inlägg
#6

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.

kobranturreMedlem sedan maj 2004602 inlägg
#7

fixade med

$content = preg_replace("/^{$_GET['i']}.*?\n/m", "", $content);

tack ändå :)

lunne82Medlem sedan dec. 2003153 inlägg
#8

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().

kobranturreMedlem sedan maj 2004602 inlägg
#9

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å ;)

lunne82Medlem sedan dec. 2003153 inlägg
#10

Steg 1: Få det att funka.
Steg 2: Optimera.

:birp

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb