![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 897 Pomógł: 40 Dołączył: 16.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam takie coś...
Wykonanie tego kodu zwróci: Kod ciąg znaków!!!! aaaaaaaaaa (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Zasadniczo jest ok, bo usuwa powtórzenia wybranych znaków, gdy jest ich więcej niż 4, z tym że ten regexp traktuje np. "?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ......." jako jeden element i skraca do "?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?" (a nie osobno znaki zapytania i kropki). Chcę osiągnąć, żeby skrypt usuwał mi powtórzenia każdego wymienionego znaku osobno, czyli w tym przykładzie na końcu powinno być "?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?....". Nie potrafię odpowiednio skonstruować wyrażenia... Będę wdzięczny za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 422 Pomógł: 0 Dołączył: 14.12.2005 Skąd: Wałbrzych Ostrzeżenie: (0%) ![]() ![]() |
Tak mi się wydaje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) bo . jest traktowana nie jako kropka tylko "wszystko". Ten post edytował Balon 30.05.2007, 17:36:15 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 897 Pomógł: 40 Dołączył: 16.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
eee... a czym Twoje $no różni się od mojego? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Poza tym wydaje mi się, że kropka w [ ] nie jest traktowana jako "wszystko"... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 422 Pomógł: 0 Dołączył: 14.12.2005 Skąd: Wałbrzych Ostrzeżenie: (0%) ![]() ![]() |
Tak teraz testuje to wydaje mi się, że sensownym wyjściem by było
Bo próbuje teraz ułożyć regexpa do tego i mi coś nie chce wyjść. Bo masz racje, że jak nastąpią po sobie jakieś znaki z regexpa to cały fragment jest skracany. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 897 Pomógł: 40 Dołączył: 16.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No jest to wyjście, ale chyba nie do końca optymalne...
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
w klasie znaków [...] tylko daszek, myślnik, slash i nawiasy kwadratowe mają specjalne znaczenie i trzeba umieścić przed nimi znak ucieczki. Czyli przykład z pierwszego posta powinien działać (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
Ja proponuję coś takiego:
[EDIT] Już widzę co jest źle. Umieściłeś "niechciane" znaki w klasie, więc twoje wyrażenie brzmiało: "jeśli znajdziesz co najmniej 4 pod rząd obojętnie jakie znaki należące do podanej klasy znaków, to je skróć". A chciałeś, żeby brzmiało "jeśli znajdziesz co najmniej 4 wykrzykniki pod rząd, lub co najmniej 4 pytajniki pod rząd, lub co najmniej ..., to je skróć." Przeanalizuj sobie moje wyrażenie. Dodam tylko, że \\1 w wyrażeniu to odwołanie wsteczne. Czyli wstawiane tam jest to, co zostało "znalezione w pierwszym nawiasie okrągłym". Ten post edytował Kicok 31.05.2007, 16:18:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 13:46 |