Ar php izdzest txt faila vardu?

Moderatori: janis.wd, Vecākie lietotāji

archeens
E-žurnālists
Atbildes: 443
Pievienojies: 11 Jan 2008, 00:09
Reputācija: 0
Atrodas: Liepāja

Ar php izdzest txt faila vardu?

Post no archeens » 23 Nov 2009, 15:26

Sveiki notepad lietotāji. Nepieciešama maza konsultācija.

Man ir nepieciešams, lai palaižot php failu tiek idzēsta ip, kura glabājas .txt failā.

pieņemsim, ka vajag izdzēst ip 10.10.10.10. Nevajag line idzēst, bet lai php kods samekle tieši ip kombināciju.

pieņemot ka txt failā atrodas šī info:

1.20.20.20.20
2.10.10.10.10
3. 30.30.30.30

Mēģināju šādi, bet nezidevās:

$strText = file_get_contents( 'file.txt' );
$strFind = '10';
$blMatch = false;

if( preg_match( "/$strFind/", $strText ) ) {

$blMatch = true;

$strText = str_replace( $strWord, '', $strText );}

ir kādi ieteikumi?
Mūžu dzīvo, mūžu mācies...
Neskati vīru pēc cepures...
Twitter Konts - http://www.twitter.com/archeens

User avatar
Wuu
E-žurnālists
Atbildes: 2918
Pievienojies: 23 Aug 2008, 10:32
Reputācija: 0

Post no Wuu » 23 Nov 2009, 16:42

Pirmā kļūme tu meklē "10" bet cik redzu tava TXT "10" nav, bet gan "2.10.10.10.10 "
Otrais būtu ieteicams str_replace norādīt COUNT
Un ieliec pilnu skriptu normālā formātā piemēram http://paste.php.lv
Image

usver
Reģistrēts lietotājs
Atbildes: 311
Pievienojies: 04 Okt 2009, 14:53
Reputācija: 0

Post no usver » 23 Nov 2009, 16:45

Code: Select all

<?php 
 $lines = file&#40;'file.txt'&#41;;
 
 $jaunais_faila_saturs = array&#40;&#41;;
 foreach&#40;$lines as $rindinja&#41;&#123;
   $tmp = explode&#40;".",$rindinja&#41;;
   
   $linijas_numurs = $tmp&#91;0&#93;;
   unset&#40;$tmp&#91;0&#93;;
   $ip = implode&#40;".",$tmp&#41;;
   // dari ko gribi ar savu $ip un $linijas_numurs;
   $ip = "&#91;".$ip."&#93;"; // prikolam apliksim ar kvadrātiekavām, nevis padzēsīsim
   $jaunais_faila_saturs&#91;&#93; = $linijas_numurs.".".$ip;
 &#125;
 // rakstam atpakaļ faila saturu.
 file_put_contents&#40;"file.txt", implode&#40;"\n", $jaunais_faila_saturs&#41;&#41;; 
Last edited by usver on 23 Nov 2009, 16:49, edited 1 time in total.

User avatar
Crow
E-žurnālists
Atbildes: 5391
Pievienojies: 10 Mai 2009, 14:22
Reputācija: 0
Atrodas: Ir

Post no Crow » 23 Nov 2009, 16:45

$strFile = file_get_contents("file.txt");
$strSrch = '10.10.10.10';
$strFile = str_replace($strSrch, "", $strFile, $iCount);
file_put_contents("file.txt", $strFile);
// echo 'Nodzēsts: '.$iCount;

Vai arī man šodien pirmdiena?
Дебилы, бл*ть...

archeens
E-žurnālists
Atbildes: 443
Pievienojies: 11 Jan 2008, 00:09
Reputācija: 0
Atrodas: Liepāja

Post no archeens » 23 Nov 2009, 16:46

http://paste.php.lv/ba17f5a97f1a9d305ae ... 4?lang=php

To jā, bet vienalga ieliekot 10.10.10.10 viņš neizdzēš. Kas vēl būtu jaīzdara? tas count kā jāieliek? Esmu tikai iesācējs šajā lietā.
Mūžu dzīvo, mūžu mācies...
Neskati vīru pēc cepures...
Twitter Konts - http://www.twitter.com/archeens

archeens
E-žurnālists
Atbildes: 443
Pievienojies: 11 Jan 2008, 00:09
Reputācija: 0
Atrodas: Liepāja

Post no archeens » 23 Nov 2009, 16:49

damncrow wrote:$strFile = file_get_contents("file.txt");
$strSrch = '10.10.10.10';
$strFile = str_replace($strSrch, "", $strFile, $iCount);
file_put_contents("file.txt", $strFile);
// echo 'Nodzēsts: '.$iCount;

Vai arī man šodien pirmdiena?
Paldies tavs variants ļoti labi strādā. Vēl tik mazs jautājums kā izdarīt, lai viņš tā vietā ko izdzēsa neatstā tukšu line, bet gan nākošais line ierindojas viņa vietā?
Mūžu dzīvo, mūžu mācies...
Neskati vīru pēc cepures...
Twitter Konts - http://www.twitter.com/archeens

usver
Reģistrēts lietotājs
Atbildes: 311
Pievienojies: 04 Okt 2009, 14:53
Reputācija: 0

Post no usver » 23 Nov 2009, 16:56

1) strādā līdz tam, kad failā būs 2 IP adreses: 10.10.10.10 un 10.10.10.101
2) fig tev vajag tos skaitļus rindu sākumos, ko pierakstīji? taisi bez tiem, būs daudz vienkāršāk.
http://paste.php.lv/903ff9f5951e783e7d4 ... 2?lang=php

kas tie par idiotiskiem tagu filtriem te forumā? pusi teksta nodzēš, ja izmanto PHP atverošo tagu un pēc tam =>.
foruma uzturētājam: ne pirmā reize, kad gļuko kods "code" tagos. to vajag ar htmlspecialchars() vispirms, bet strip_tags() - visam pārējam.

archeens
E-žurnālists
Atbildes: 443
Pievienojies: 11 Jan 2008, 00:09
Reputācija: 0
Atrodas: Liepāja

Post no archeens » 23 Nov 2009, 17:11

usver wrote:1) strādā līdz tam, kad failā būs 2 IP adreses: 10.10.10.10 un 10.10.10.101
2) fig tev vajag tos skaitļus rindu sākumos, ko pierakstīji? taisi bez tiem, būs daudz vienkāršāk.
http://paste.php.lv/903ff9f5951e783e7d4 ... 2?lang=php

kas tie par idiotiskiem tagu filtriem te forumā? pusi teksta nodzēš, ja izmanto PHP atverošo tagu un pēc tam =>.
foruma uzturētājam: ne pirmā reize, kad gļuko kods "code" tagos. to vajag ar htmlspecialchars() vispirms, bet strip_tags() - visam pārējam.
Isti nestrādā. ja piemēram es to ip dabūnu no šīs komandas $ip

Pēc tavas darbības tiek vienkārši pielikts gandrīz katrai ip simbolins klāt priekšā, nevis dzēsts.

http://paste.php.lv/742026cdace24049363 ... e?lang=php
Mūžu dzīvo, mūžu mācies...
Neskati vīru pēc cepures...
Twitter Konts - http://www.twitter.com/archeens

usver
Reģistrēts lietotājs
Atbildes: 311
Pievienojies: 04 Okt 2009, 14:53
Reputācija: 0

Post no usver » 23 Nov 2009, 17:14

pag, tu izlem - tev vajag tos skaitļus rindu sākumā vai nevajag?
tas kods ideāli strādā, ja skaitļu nav un failā ir plikas IP adreses.

ja lieto tizlo windows notepad, kurš saprot tikai "\r\n", tad lietot file_put_contents('file.txt', implode("\r\n", $lines));. PHP sapratīs arī tāpat.
+ lietot if(strcmp(trim($one_ip), $ip) == 0){

User avatar
Wuu
E-žurnālists
Atbildes: 2918
Pievienojies: 23 Aug 2008, 10:32
Reputācija: 0

Post no Wuu » 23 Nov 2009, 17:23

Code: Select all

$filename = 'file.txt';
$search = '20.20.20.20';
$contents = file_get_contents&#40;$filename&#41;;
if &#40;preg_match&#40;'/'.$search.'/',$contents&#41;&#41; &#123;
	$contents = str_replace&#40;$search,'',$contents&#41;;
	$handle = fopen&#40;'file.txt','w+'&#41;;
	fwrite&#40;$handle,$contents&#41;;
	fclose&#40;$handle&#41;;
&#125;
Image

archeens
E-žurnālists
Atbildes: 443
Pievienojies: 11 Jan 2008, 00:09
Reputācija: 0
Atrodas: Liepāja

Post no archeens » 23 Nov 2009, 17:25

Skaitļi nav sākumā ir tikai ip daudz rindā. Precīzāk taisu sms unban sistēmu no servera. Tiklidz nosuta sms ir jaidzesh to ip kuru noradija ara no ta faila teksta, vins protams ir .conf fails, bet tas būtību nemaina. Ip adreses failā katra sava rindā ir.

xx.xx.xx.xx
xx.xx.xx.xx
xx.xx.xx.xx
xx.xx.xx.xx

pec ta $ip nosaka kadu ip vins ir ievadijis formā, kur prasīja ip un sms kodu.
Mūžu dzīvo, mūžu mācies...
Neskati vīru pēc cepures...
Twitter Konts - http://www.twitter.com/archeens

archeens
E-žurnālists
Atbildes: 443
Pievienojies: 11 Jan 2008, 00:09
Reputācija: 0
Atrodas: Liepāja

Post no archeens » 23 Nov 2009, 17:31

Wuu wrote:

Code: Select all

$filename = 'file.txt';
$search = '20.20.20.20';
$contents = file_get_contents&#40;$filename&#41;;
if &#40;preg_match&#40;'/'.$search.'/',$contents&#41;&#41; &#123;
	$contents = str_replace&#40;$search,'',$contents&#41;;
	$handle = fopen&#40;'file.txt','w+'&#41;;
	fwrite&#40;$handle,$contents&#41;;
	fclose&#40;$handle&#41;;
&#125;
tavs variants izdzesa ip, bet to rindu atstaja tuksu sanak, ka faila palika

xx.xx.xx.xx
tuks
xx.xx.xx.xx

un vēl, ja ir 2 lidzigas ip, piemeram ir:

10.10.10.10
10.10.10.100

un ja vajag izdzest tagad 10.10.10.10, tad pirmo izdzesis un taja paliks ta nullite beigas.
Mūžu dzīvo, mūžu mācies...
Neskati vīru pēc cepures...
Twitter Konts - http://www.twitter.com/archeens

User avatar
Wuu
E-žurnālists
Atbildes: 2918
Pievienojies: 23 Aug 2008, 10:32
Reputācija: 0

Post no Wuu » 23 Nov 2009, 17:45

Takš pielabo nejau priekš sevis rakstu :)

Code: Select all

$contents = str_replace&#40;$search."\n",'',$contents&#41;;
Image

archeens
E-žurnālists
Atbildes: 443
Pievienojies: 11 Jan 2008, 00:09
Reputācija: 0
Atrodas: Liepāja

Post no archeens » 23 Nov 2009, 17:53

usver wrote:pag, tu izlem - tev vajag tos skaitļus rindu sākumā vai nevajag?
tas kods ideāli strādā, ja skaitļu nav un failā ir plikas IP adreses.

ja lieto tizlo windows notepad, kurš saprot tikai "\r\n", tad lietot file_put_contents('file.txt', implode("\r\n", $lines));. PHP sapratīs arī tāpat.
+ lietot if(strcmp(trim($one_ip), $ip) == 0){
http://paste.php.lv/37f0478ca5a5f41de5f ... f?lang=php

Tā tagad viss ir pareizi ar tavu kodu, Viņš izdzēš. Bet ir lieta tāda, ka aiz ip vēl ir bana laiks, kuram arī jānodzešans būtu, bet tas nenotiek, piemēram:

xx.xx.xx.xx 11111
xx.xx.xx.xx 45454
xx.xx.xx.xx 43435

Vel tikai tas un viss :) Piedo, ka ātrāk nepateicu.

PS. Wuu ar tavu kodu gan kkas nestrādā, viņš vispār neizdzēsa neko.
Mūžu dzīvo, mūžu mācies...
Neskati vīru pēc cepures...
Twitter Konts - http://www.twitter.com/archeens

User avatar
Crow
E-žurnālists
Atbildes: 5391
Pievienojies: 10 Mai 2009, 14:22
Reputācija: 0
Atrodas: Ir

Post no Crow » 23 Nov 2009, 17:58

Visātrākais ceļš uz pareizi atrisinātu uzdevumu ir pareizi nodefinēts uzdevums :-|

Code: Select all

  $remove = '10.10.10.10';

  $file = fopen&#40;'file.txt', 'rb'&#41;;
  $newfile = '';

  while &#40;$line = fgets&#40;$file&#41;&#41; &#123;
    list&#40;$ip, $bullshit&#41; = explode&#40;" ", $line&#41;;
    if &#40;rtrim&#40;$ip&#41; != $remove&#41; &#123;
      $newfile = $newfile.$line;
    &#125;
  &#125;

  fclose&#40;$file&#41;;
  file_put_contents&#40;"file.txt", $newfile&#41;;
Mhh?
Дебилы, бл*ть...

User avatar
Wuu
E-žurnālists
Atbildes: 2918
Pievienojies: 23 Aug 2008, 10:32
Reputācija: 0

Post no Wuu » 23 Nov 2009, 18:08

archeens wrote: PS. Wuu ar tavu kodu gan kkas nestrādā, viņš vispār neizdzēsa neko.
Windows \r\n, Linux \n
Image

archeens
E-žurnālists
Atbildes: 443
Pievienojies: 11 Jan 2008, 00:09
Reputācija: 0
Atrodas: Liepāja

Post no archeens » 23 Nov 2009, 18:11

damncrow wrote:Visātrākais ceļš uz pareizi atrisinātu uzdevumu ir pareizi nodefinēts uzdevums :-|

Code: Select all

  $remove = '10.10.10.10';

  $file = fopen&#40;'file.txt', 'rb'&#41;;
  $newfile = '';

  while &#40;$line = fgets&#40;$file&#41;&#41; &#123;
    list&#40;$ip, $bullshit&#41; = explode&#40;" ", $line&#41;;
    if &#40;rtrim&#40;$ip&#41; != $remove&#41; &#123;
      $newfile = $newfile.$line;
    &#125;
  &#125;

  fclose&#40;$file&#41;;
  file_put_contents&#40;"file.txt", $newfile&#41;;
Mhh?
Paldies tu esi Dievs :*

paldies arī pārējiem, kuri palīdzēja. uz tikšanos.
Mūžu dzīvo, mūžu mācies...
Neskati vīru pēc cepures...
Twitter Konts - http://www.twitter.com/archeens

Pievienot atbildi

Return to “Servera puse (php, java, ruby, perl, python) ”