Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: podmiania całych wyrazów regular expression
Forum PHP.pl > Forum > PHP
L_Devil
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?
FiDO
Zobacz jeszcze raz, bo az sprawdzilem caly kod, ktory podales i jest dobrze.
dtb
Nie lepiej zrobić to bez wyrażeń regularnych:

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


questionmark.gif
L_Devil
  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ć.
legorek
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.
orson
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
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.