![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 4 Dołączył: 21.02.2004 Skąd: z domu Ostrzeżenie: (0%) ![]() ![]() |
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ć (IMG:style_emoticons/default/smile.gif) Ma ktoś jakiś pomysł? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
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). Ten post edytował Crozin 18.03.2013, 12:34:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 14:20 |