Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrażenia regularne - amp w nawiasach
Forum PHP.pl > Forum > PHP
gsk
Witam,

Chce dopuścić w ciągu preg_replace'm wszystkie literki, cyferki, spacje i odstępy a na dodatek chcę zostawić <&>
Cała reszta ma zostać usunięta.
Siedzę już dłuższą chwilę i nie mogę tego wyciągnąć. Udaje mi się w drugą stronę tj. (<&>)|(\w)|(\s)|(\d) ale nie wiem jak to zanegować smile.gif
Ma ktoś jakiś pomysł?
Fifi209
Chyba o to chodzi:
  1. <?php
  2.  
  3. $tekst = 'Basia ma 2 kotki. Jeden & Drugi ma na imie zosia ,.< > ;%*() !! questionmark.gif? ';
  4.  
  5. $tekst = preg_replace('/([^\w\s\d&])/', '', $tekst);
  6. echo $tekst;
  7.  
  8. ?>
gsk
Źle mnie zrozumiałeś smile.gif

Z tekstu:
  1. Basia ma 2 kotki. Jeden & Drugi ma na imie zosia. A to <&> ma zostać.

Ma zostać:
  1. Basia ma 2 kotki. Jeden Drugi ma na imie zosia. A to <&> ma zostać.


Czyli <&> ma puszczać jako jeden ciąg 3 znaków smile.gif
Fifi209
Skoro chcesz jeszcze < > to dopisz je do wyrażenia po prostu:

Kod
/([^\w\s\d&<>])/


Chyba, że ma przepuszczać tylko <&> a już samego < nie w takim razie co innego.
matix
Jeżeli tylko "samotne" & wyciąć, to:

Kod
preg_replace('(\s&\s)', '', $code);
gsk
Nie zrozumieliście smile.gif Znaki takie jak <, >, & mają być zablokowane. Natomiast ciąg <&> ma zostać puszczony smile.gif
fiszol
http://txt2re.com/
Crozin
Prawdopodobnie da się to rozwiązać korzystając z look ahead i look behind: http://www.php.net/manual/en/regexp.reference.assertions.php.

Jednak prawdopodobnie dużo lepszym, tj. bardziej czytelnym i łatwiejszym w modyfikowaniu będzie w skorzystanie z preg_replace_callback, wyłapanie wszystkich niedozwolonych znaków wraz ze znakiem poprzedzającym i następującym, w callbacku sprawdzenie czy nie mamy aby przypadkiem do czynienia z przypadkiem szczególnym (<&>) i zwrócenie odpowiednio: <&> w przypadku wyłapania <&>, bądź znaku poprzedzającego i następującego (bez samego znaku zakazanego).
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.