![]() |
![]() |
![]() ![]()
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: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Chyba o to chodzi:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 4 Dołączył: 21.02.2004 Skąd: z domu Ostrzeżenie: (0%) ![]() ![]() |
Źle mnie zrozumiałeś (IMG:style_emoticons/default/smile.gif)
Z tekstu:
Ma zostać:
Czyli <&> ma puszczać jako jeden ciąg 3 znaków (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował Fifi209 13.03.2013, 12:38:49 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli tylko "samotne" & wyciąć, to:
Kod preg_replace('(\s&\s)', '', $code);
Ten post edytował matix 17.03.2013, 14:34:34 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 4 Dołączył: 21.02.2004 Skąd: z domu Ostrzeżenie: (0%) ![]() ![]() |
Nie zrozumieliście (IMG:style_emoticons/default/smile.gif) Znaki takie jak <, >, & mają być zablokowane. Natomiast ciąg <&> ma zostać puszczony (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 453 Pomógł: 16 Dołączył: 25.05.2004 Skąd: Gorzów Wlkp. Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
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: 19.09.2025 - 21:39 |