Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]podmiana linijki na inna ze zmiennymi?
canismajoris
post 3.02.2012, 11:05:43
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


Witam

może ktoś pomóc.

  1. $plik=file('plik.txt');
  2. $new=("to jest przykladowy wpis");
  3.  
  4. foreach ( $plik as $line => $value )
  5. {
  6. if (preg_match('/\b'.$wyraz1.'\b/', $value) ) {
  7. if (preg_match('/\b$wyraz2\b/', $value) )
  8. {
  9. str_replace( $value, $new , $plik);
  10. }}}


nie dziala podmiana
jak biore echo to mi wybrany fragment lini wy swietli, ale go nie podmienia , coś pewnie nie tak z str/-replace i składnią, ale próbuje i nie działa.
pozdr.


nie udało mi się dojść jak pdmienić cała linię więc próbuje znaleźć pasującą lnię, usunąć linię i zapisać nową.
nie działa mi jednak część pierwsza usunięcie wybranej.
kod mam taki
błędów nie wywala a mimo to nie usuwa linii, może ktoś rzucić okiem, będę wdzięczy za sugestie

  1. $file=file("test.txt");
  2. #$fp=fopen($file, "a+");
  3. foreach ( $file as $line => $value )
  4. {
  5. if (preg_match('/karolina/' , $value ))
  6. {
  7. #echo $value;
  8. unset($file['$vlue']);
  9. }}


pozdraiwam
Go to the top of the page
+Quote Post
nospor
post 3.02.2012, 12:19:16
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




kasue się po indeksie a nie po wartosci

NIe; unset($file['$vlue']);
a: unset($file[$line]);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
canismajoris
post 3.02.2012, 12:55:11
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


  1. $file=file("test.txt");
  2.  
  3. foreach ( $file as $line => $value )
  4. {
  5. if (preg_match('/karolina/' , $value ))
  6. {
  7. unset($file[$line]);
  8. }}


plik txt zawiera imona

marta
martyna
karolina
agnieszka

dalej nie kasuje mi lini karolina, najlepiej jakby zamienil np. karolina na ania....
Go to the top of the page
+Quote Post
nospor
post 3.02.2012, 13:01:17
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




unset operuje na tablicy a nie na pliku. Wykonanie unset w żaden sposób nie zmienia zawartosci pliku

A jak chcesz zmienic karolina na ania to uzy poprostu str_replace i po sprawie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
canismajoris
post 3.02.2012, 13:18:39
Post #5





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


a w takim razie jakas podpowiedz jak to wykonać?

  1. $plik=file("test.txt");
  2.  
  3. foreach ( $plik as $line => $value )
  4. {
  5. if (preg_match('/karolina/' , $value ))
  6. {
  7. str_replace('karolina' , 'ania' ,$plik);
  8. }}



nie działa
Go to the top of the page
+Quote Post
vonski
post 3.02.2012, 15:12:49
Post #6





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zamiast

  1. str_replace('karolina' , 'ania' ,$plik);


daj:

  1. $plik = str_replace('karolina' , 'ania' ,$plik);


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
canismajoris
post 4.02.2012, 00:44:50
Post #7





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


  1. $plik=file("plik.txt");
  2. $fplik=fopen("plik.txt", "r+");
  3. $dane = ("$a $b $c $d $e $f $g");
  4. foreach ( $plik as $line => $value )
  5. {
  6. if (preg_match('/\b'.$a.'\b/', $value) ) {
  7. if (preg_match('/\b'.$b.'\b/', $value) )
  8. {
  9. $output=$value;
  10. #echo $value;
  11. $rtext = fread($fplik, filesize("plik.txt"));
  12. $text = str_replace($output ,$dane ,$rtext);
  13. fwrite($fplik,$text);
  14. fclose($fplik);
  15. }}}


ok, wykonałem to w taki sposób.
działa na tyle że dopisuje mi dane, jednak nie zamenia linii-nie kasuje starej.
co tu poprawić?

z gory dzieki

anyone?

Ten post edytował canismajoris 3.02.2012, 17:30:17
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 05:36