![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 34 Dołączył: 7.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Problem dla mnie dość nietypowy. Otóż staram się napisać funkcję która zamieni podany ciąg znaków na następujacy:
Ciąg: abc[link]abcdef[/link]def Na: ab c[link]ab cd ef[/link]de f Wymyśliłem jak to zrobić, choć pewnie istnieje jakaś prostsza metoda. Otóż, aby moje rozwiązanie w ogóle działało muszę zastosować funkcję w taki sposób: gdzie divstr to funkcja obcinająca tekst do ciągów 2-znakowych. Moje pytanie: Czy umieszczanie funkcji w ten sposób jest w ogóle możliwe? Jeżeli nie, to prosiłbym o wskazówkę w jaki innych sposób rozwiązać ten problem. Czyli: nie ruszać samych znaczników phpBB, natomiast skracać tekst przed, pomiędzy i za nimi. Z góry dziękuję. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Wyrażenie jest źle napisane, przykładowo podajesz zakres:
[a-z] A ile razy może wystąpić znak z tego zakresu? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 34 Dołączył: 7.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dla testowanego przykładu wyrażenie jest dobre, sprawdzałem Mają to być np [ b ], [ i ] (bez spacji) etc. Jednak co do samego problemu: Można stosować w taki sposób funkcje, czy nie?
Na stronie http://xrg.es można sprawdzić mój przykład Regular Expression: #(.*?)(\[[a-z]\])(.*?)(\[/[a-z]\])(.*?)#si String: aaa[ b ]bbbb[/ b ]ccc[ i ]ddd[/ i ]eee Wybrać preg_replace() i w polu Replacement wpisać $1$3 - te właśnie ciągi chcę objąć moją funkcją. Końcowy replacement, jaki ja chcę otrzymać to np. Problem w tym, że żaden z zapisów nie działa: ani divstr($1), ani divstr('$1') Pozdrawiam Ten post edytował DiH 18.02.2010, 15:22:58 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
masz dwie opcje:
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 34 Dołączył: 7.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Czytając w manualu o preg_replace_callback natknąłem się na linka zawierającego dokładnie to, co chcę zrobić, a nawet więcej: http://www.phpclasses.org/browse/package/4829.html
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 22:23 |