Pełen chęci, z pomysłem i zacięciem zabrałem się do pisania w PHP. I przyszło oświecenie…
replacement
The string or an array with strings to replace. If this parameter is a string and the pattern parameter is an array, all pattens will be replaced by that string. If both pattern and replacement parameters are arrays, each pattern will be replaced by the replacement counterpart. If there are less keys in the replacement array than in the pattern array, the excedent patterns will be replaced by an empty string.
To… To nie umie ruszać funkcji? Nie!
Oczywiście, znalazłem po sekundzie funkcję preg_replace_callback. Tylko, że jej sposób przekazywania danych zupełnie mi nie pasuje. Całkowicie. Nie wiem nawet, czy dałoby się przekazać dane poprzez \\1, \\2, które byłyby bardzo przydatne, inaczej musiałbym jeszcze raz przepuszczać to przez preg_*.
A miało być tak pięknie…
Przy okazji nie jestem pewien zachowania kilku innych rzeczy…
Apdejt: Jednak nie wszystko stracone.
Apdejt 2: Problem jest, ale w innym miejscu, niż się spodziewałem. Wygląda na to, że w preg_replace nie można wstawiać \\1 do pattern, dzięki czemu poszukiwanie /<data:(\S+)>(.*?)<\/data:\\1>/e
nie chce zadziałać w żaden sposób. Na razie to jest główny problem, sądzę, że głębiej w kodzie znajduje się kilka innych niedoróbek, albo i poważnych błędów. Jeszcze do tego jednak nie dotarłem. Muszę najwierw spróbować obejść tą niedogodność.
Trzeba najpierw poznać dokładnie działanie funkcji i dobrze przemyśleć pisany kod zanim napisze się, że to język ssie 🙂
Pozdrawiam
Moje przemyślenia skończyły się na tym, co można było przeczytać powyżej. 😉
Jeśli masz jakąś użyteczną wskazówkę, to chętnie przeczytam.
[…] Pisałem, że PHP ssie. Wreszcie ruszyłem do przodu z moimi podbojami tego języka i doszedłem do wniosku, że PCRE nie […]