![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
za pomocą wyrażeń regularnych i funkcji preg_replace(), muszę dokonać podmiany frazy A w zmiennej tekstowej, nie podmieniając tej samej frazy A występującej pomiędzy dwoma różnymi znacznikami. Przykład - słowo 'dlugi' trzeba zamienić na 'krotki' nie zamieniając słowa pomiędzy znacznikami 11 i 22. Dodatkowa trudnoscią jest fakt, że w rzeczywistości, pomiędzy znacznikami może znaleźć się wszystko, z kodem w php, perlu itp. włącznie. $string1 = "To jest jakis dlugi 11 dlugi 22 tekst"; $string2 = preg_replace('//', '', $string1); Jak zapisać wyrażenie regularne dla $string2 w preg_replace() ? Może coś Będę wdzięczny za wskazówki Ten post edytował caroon 16.01.2009, 23:24:36 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
przerabne, bo to dziala tylko jesli masz jedno wystapienie 'dlugi' przed 11. jak chcesz to obejsc, to zrob petle ktora trwa do momentu az przedostatnia zamiana rowna sie ostatniej zamianie (czyli nic nie zmienilismy). jest to nie wydajne na maksa, ale jest pozno wiec tylko to mi przyszlo do glowy ![]() -------------------- Kodzimy!!!
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 1 Dołączył: 5.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witaj, zrobiłem to bez uzycia funkcji preg_replace, ale nie wiem czy o takie coś dokładnie Tobie chodzi i czy moja wersja się w tym sprawdzi, oto kod:
Po prostu zamienia '11 dlugi 22' na ciąg znaków '!@@@!' i potem wszystkie wystąpienia słowa 'dlugi' na 'krotki' i w efekcie zwraca poprawny string. Tylko, gdy w tekście znajdzie się coś o wartości takiej samej jak string $r to zostanie to zamienione na słowo 'długi'. Jeśli będziesz miał pewność, że taki ciąg znaków nie wystąpi powinno działać, jeśli nie to możesz najpierw z całego tekstu usunąć ciąg '!@@@!' (bo w sumie nietypowy i brzydko wyglądający na stronie) albo zamienić go np na '!!!!!', pokombinuj ![]() Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.07.2025 - 19:48 |