Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> podmiania całych wyrazów regular expression, czyli preg_replace("/\bSłowo\b/"...
L_Devil
post
Post #1





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

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


Witam! Mam następujący problem - w moim skrypcie muszę po podmieniać pełne słowa na inne odpowiedniki. Sprawa wydaje się banalna przy użyciu preg_replace" title="Zobacz w manualu php" target="_manual:
  1. <?php
  2. $slowo = "/bbujb/";
  3. $slowo2 = "bój";
  4. $ciag = "buj się boga";
  5. $ciag = preg_replace($slowo, $slowo2, $ciag); // no, pięknie działa ;)
  6. // $ciag = "bój się boga". Więc w czym problem? Ano:
  7. $ciag2 = "Próbuję";
  8. $ciag2 = preg_replace($slowo, $slowo2, $ciag2); // $ciag2 ma teraz wartość "Próbóję"
  9. //- czyli NIE to o co nam chodziło. Dlaczego?
  10. ?>
Więc właśnie - dlaczego to słowo zostaje podmienione w środku ciągu? Co takiego robię nie tak?


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
FiDO
post
Post #2





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


Zobacz jeszcze raz, bo az sprawdzilem caly kod, ktory podales i jest dobrze.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
dtb
post
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


Nie lepiej zrobić to bez wyrażeń regularnych:

  1. <?php
  2. $ciag = str_replace('bój', 'buj', $ciąg);
  3. ?>


questionmark.gif


--------------------
Go to the top of the page
+Quote Post
L_Devil
post
Post #4





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

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


  1. <?php
  2. $ciag = "Próbuje"
  3. $ciag = str_replace("buj", "bój", $ciag);
  4. // $ciag = "Próbóję" <- Środek wyrazu podmieniony. Czyli nie to o co chodziło.
  5. ?>


Nie rozumiem już skąd to się bierze. Prawdą jest że jest to fragment modu do phpBB, i że cały kod jest dość skomplikowany. Szlag może człowieka trafić - wszystko to co jest istotne (teoretycznie) działa sobie osobno dobrze, ale gdy jest częścią całości, to nijak nie chce ruszyć.


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post
legorek
post
Post #5





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


Cytat(L_Devil @ 2005-11-05 10:58:18)
  1. <?php
  2. $ciag = "Próbuje"
  3. $ciag = str_replace("buj", "bój", $ciag);
  4. // $ciag = "Próbóję" <- Środek wyrazu podmieniony. Czyli nie to o co chodziło.
  5. ?>

Dobrze zadziałało, szukałeś ciągu 'buj' w ciągu 'Próbuję' żeby go zamienieć na 'bój' i tak własnie się stało. Sprecyzuj jasno o co Ci chodzi.


--------------------
Go to the top of the page
+Quote Post
orson
post
Post #6





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam ...

przecież słowo definiowane jest przez ciąg znaków ograniczony z 2 stron "białym znakiem" ... więc jak masz tekst w którym chcesz zamieniać słowa to dodawaj do nich spacje z przodu i z tyłu słowa i po problemie ... dla wielu słów można użyć strtr z tablicą jako 2 i szybko, wygdnie i efektywnie ...

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
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 Aktualny czas: 22.08.2025 - 05:02