Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zastąpienie słów innymi słowami
Forum PHP.pl > Forum > Przedszkole
L_Devil
Kolejny problem z 'kochanym' str_replace" title="Zobacz w manualu php" target="_manual:

  1. <?php
  2. /* To mamy: */
  3. $lista_slow = array("nie", "tak")
  4. $lista_slow_do_zamiany = array("tak", "nie")
  5. $tekst = "nie, to nie jest nieetyczne, więc co mówisz że tak?"
  6.  
  7. /* Używamy klasycznego str_replace */
  8. $tekst = "tak, to tak jest taketyczne, więc co mówisz że nie?"
  9. /* Fajnie, ale miało podmienić TYLKO wyrazy, a on przerobił mi środek "nieetyczne" na "taketyczne"... Tak nie powinno być!.. może dodamy spacje przed i po? */
  10.  
  11. $lista_slow = array(" nie ", " tak ")
  12. $lista_slow_do_zamiany = array(" tak ", " nie ")
  13.  
  14. /*tylko że teraz po użyciu str_replace mamy */
  15. $tekst = "nie, to tak jest nieetyczne, więc co mówisz że tak?"
  16. /* czyli jeszcze gorzej */
  17.  
  18. ?>
Pytanie - jak sformuować wyrażenie regularne aby użyć funkcji ereg_replace" title="Zobacz w manualu php" target="_manual, aby podmieniał wyrazy i tylko wyrazy? [tzn. jeżeli wyraz jest częścią innego wyrazu żeby pozostał bez zmian? ]
Kas
Musisz sprawdzać czy podmianiasz cały wyraz - cały element tablicy.
Chyba o to ci chodzi?
L_Devil
Cytat(Kas @ 2005-08-10 12:32:49)
Musisz sprawdzać czy podmianiasz cały wyraz - cały element tablicy.
Chyba o to ci chodzi?

W jaki sposób mam to sprawdzić? Bo cały element tablicy to zawsze będzie podmieniany, niezależnie czy wyraz jest cały czy jest to tylko część innego wyrazu. Wydaje mi się że najlepszym rozwiązaniem byłoby wyrażenie regularne którego nie umiem sforumować, ale mogę się mylić. Anyways byłbym wdzięczny za wszystkie inne pomysły bo już zupełnie nie mam pojęcia jak to zrobić smile.gif
FiDO
  1. <?php
  2.  
  3. preg_replace('#bwyraz_do_podmianyb#', ...);
  4.  
  5. ?>
cienki bolek
btw a jak zrobic zeby podmienil mi takie cos:
Kod
<hr> <----przejscie do nowej linii
<br>


na
Kod
<hr>
L_Devil
Cytat(FiDO @ 2005-08-10 13:12:25)
  1. <?php
  2.  
  3. preg_replace('#bwyraz_do_podmianyb#', ...);
  4.  
  5. ?>

Fido! Bóg w dzieciach wynagrodzi! Dokładnie o to mi chodziło smile.gif

A co do

@cienki bolek->

  1. <?php
  2. $tekst = str_replace("<hr><br>", "<hr>", $tekst);
  3. ?>
strife
@L_Devil - to miało być przejście do nowej lini, w Twoim kodzie tego nie widać.
Czyli:
  1. <?php
  2.  
  3. $tekst = str_replace("<hr>n<br>", "<hr>", $tekst);
  4.  
  5. ?>
cienki bolek
Cytat(scarface @ 2005-08-10 13:39:20)
@L_Devil - to miało być przejście do nowej lini, w Twoim kodzie tego nie widać.
Czyli:
  1. <?php
  2.  
  3. $tekst = str_replace("<hr>n<br>", "<hr>", $tekst);
  4.  
  5. ?>

ale jak tak daje to nie dziala


bo chodzi mi o to ze mam plik txt w takiej formie:

Kod
tytul<hr>
costam
costam2
tytul<hr>
costam
costam2


i mam kod ktory wyswietla zawartosc tego pliku i dodaje po kazdej linijce <br>, tyle ze <br> dodaje na poczatku nowej linii a nie na koncu starej linii, i ja chce zamienic <hr>"ENTER"<br> na samo <hr> coby nie bylo za duzego odstepu:P bo <hr> od razu "przenosi do nastepnej linii" takjakby


  1. <?php
  2.  
  3. $fp=fopen($file, "r");
  4. for($x=0; $x<24; $x++)
  5. {
  6. $text = fgets($fp) . "<br>";
  7. if(feof($fp)) break;
  8. $search = array ('@<hr><br>@',
  9.  '@<hr>[^a-z]<br>@',
  10.  '@<hr>n<br>@');
  11. $replace = array ('<hr>',
  12. '<hr>',
  13. '<hr>');
  14. $text = preg_replace($search, $replace, $text);
  15. print $text;
  16.  
  17. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.