Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenia regularne - zamiana wartości tylko w nawiasie
Forum PHP.pl > Forum > PHP
Sebusik
Cześć wink.gif

Mam pewien problem z wyrażeniami regularnymi. Mam taki kod:

  1. $zmienna= "ala ma kota(wiec nie jest smutna), a kot ma ale(skoro ja ma to tez nie jest smutny).";


Chcę zamienić litery "a" na "-". Problemu nie ma, gdy zamienię wszystkie litery:

  1. $zmienna = preg_replace("#a#si", "-", $zmienna);


Jednakże nie wiem, co zrobić, aby zamieniały się litery tylko te, które są w nawiasach.

Proszę o pomoc.
matulek
  1. <?
  2.  
  3. $zmienna= "ala ma kota(wiec nie jest smutna), a kot ma ale(skoro ja ma to tez nie jest smutny).";
  4.  
  5. $zmienna = preg_replace("/(\(.*)a(.*\))/U", "$1-$2", $zmienna);
  6.  
  7. echo $zmienna; // ala ma kota(wiec nie jest smutn-), a kot ma ale(skoro j- ma to tez nie jest smutny).
  8.  
  9. ?>
erix
preg_replace_callback
Sebusik
@matulek
W twoim przykładzie zamieniana jest tylko pierwsza litera "a" z każdego nawiasu wink.gif

@erix
Staram się coś z tym ogarnąć na razie.

Edit: Już sobie poradziłem. Zrobiłem tak:

  1. $text = preg_replace_callback("/\(([^\)]*)a([^)]*)\)/", function($matches){return str_replace("a", "-", $matches[0]);}, $text);


Dzięki za pomoc wink.gif
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.