![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 2.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam tekst dajmy na to: "AA dfs <FNC>srodtytul("dlatego to wszystko")</FNC> dfsd". Chce zastąpić zawartość znaczników <FNC></FNC> na wartość funkcji, która znajduje się pomiędzy nimi. Wszystko działa dobrze, dopóki nie pojawia się funkcja z atrybutem w cudzysłowiu, czyli dla np "hr()" wszystko jest ok.
Wyrażenie: $body = preg_replace('/<FNC>(.*?)<\/FNC>/e','\\1',$body); Błąd, który wyskakuje: Warning: Unexpected character in input: '\' (ASCII=92) state=1 in D:\WWW\trajektoria\index.php(29) : regexp code on line 1 Parse error: syntax error, unexpected $end in D:\WWW\trajektoria\index.php(29) : regexp code on line 1 Fatal error: preg_replace() [function.preg-replace]: Failed evaluating code: srodtytul(\"dlatego to wszystko\") in D:\WWW\trajektoria\index.php on line 29 ps. W oryginalnym tekscie nie ma backslashów. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Zwykłe preg replace z flagą e też robi coś w rodzaju evala:
(Co ciekawe zamiana print na echo powoduje wyrzucenie błedu :|) Cytat Ktoś może wie, czemu nie przechodzi w preg_replace cudzysłów z funkcji? Przed znakami cudzysłowia w znalezionym tekście pojawiły się backshashe, które zakłócały pracę preg_replace'owego evala. Kolejna dziwna rzecz :| Ten post edytował Kicok 4.07.2007, 17:44:55 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 04:18 |