Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zastąpienie słów innymi słowami, wyrażenie regularne
L_Devil
post
Post #1





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

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


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? ]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Kas
post
Post #2





Grupa: Zarejestrowani
Postów: 425
Pomógł: 0
Dołączył: 28.05.2005
Skąd: Warszawa

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


Musisz sprawdzać czy podmianiasz cały wyraz - cały element tablicy.
Chyba o to ci chodzi?
Go to the top of the page
+Quote Post
L_Devil
post
Post #3





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

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


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ć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
FiDO
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


  1. <?php
  2.  
  3. preg_replace('#bwyraz_do_podmianyb#', ...);
  4.  
  5. ?>
Go to the top of the page
+Quote Post
cienki bolek
post
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 19.07.2005

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


btw a jak zrobic zeby podmienil mi takie cos:
Kod
<hr> <----przejscie do nowej linii
<br>


na
Kod
<hr>


Ten post edytował cienki bolek 10.08.2005, 12:17:21
Go to the top of the page
+Quote Post
L_Devil
post
Post #6





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

A co do

@cienki bolek->

  1. <?php
  2. $tekst = str_replace("<hr><br>", "<hr>", $tekst);
  3. ?>


Ten post edytował L_Devil 10.08.2005, 14:10:11
Go to the top of the page
+Quote Post
strife
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


@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. ?>
Go to the top of the page
+Quote Post
cienki bolek
post
Post #8





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 19.07.2005

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


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. ?>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 14:49