![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 9.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mając ciąg znaków w dowolnym miejscu (w tym na początku i na końcu) może pojawić się podciąg ograniczony znakami '<' oraz '>'. Chciałbym zmienić wszystkie znaki '/' na '*' w tym podciągu. Uwaga znaki '/' mogą znajdować się też poza ciągiem, wtedy nie należy ich zmieniać.
Przykład 1: Wejście: abc/<d/e/f>/ghi #znaki d, e, f mogą mieć dowolną długość (dowolną liczbę liter) Wyjście: abc/<d*e*f>/ghi Przykład 2: Wejście: <a/b/c>/<d/e/f>/<g/h/i> #znaki a, b, c, d, e, f, g, h, i mogą mieć dowolną długość (dowolną liczbę liter) Wyjście: <a*b*c>/<d*e*f>/<g*h*i> Przykład 3: Wejście: <a/b/c>/<d/e/f>/ghi #znaki a, b, c, d, e, f mogą mieć dowolną długość (dowolną liczbę liter) Wyjście: <a*b*c>/<d*e*f>/ghi Przykład 4: Wejście: <a/b/c>/def/ghi #znaki a, b, c mogą mieć dowolną długość (dowolną liczbę liter) Wyjście: <a*b*c>/def/ghi Kompletnie nie wiem jak się do tego zabrać. Jeśli zmianie ulegałyby wszystkie znaki '/' to nie było by problemów ale tutaj chodzi o to, że tylko część, która spełnia kryteria (należenia do podciągów ograniczonych do < i >) tylko została zmieniona. Ten post edytował dinioxx 24.08.2010, 13:07:23 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wyciąganie wszystkiego z nawiasów trójkątnych <(.*?)>
+ preg_replace z modyfikatorem e (przykład 4) + str_replace powinno wystarczyć -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 9.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
W zasadzie to wszystko wiem (oprócz modyfikatora e). Pytanie jak połączyć w jedną całość. Niestety to raczej mnie przerasta.
(przykład 4) Oczywiście wkradła się literówka w przykładzie 4. Już poprawiłem pierwszy post. Początek podciągu zawsze zaczyna się od '<' a kończy się na '>'. Ten post edytował dinioxx 24.08.2010, 13:09:33 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Modyfikator e to eval, czyli kod php, który ma się wykonać podajesz jako string. W twoim przypadku będzie to:
\\1 oznacza pierwszy (jedyny) nawias okrągły z wyrażenia, które podałem. W sumie to wszystko masz na tacy, więc nie żartuj, że powkładanie tego w odpowiednie miejsca preg_replace cię przerasta ![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
To raczej preg_replace_callback ;]
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 21:45 |