Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyrażenie regularne + funkcje użytkownika, problemy z cudzysłowiami
rimk
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
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:

  1. <?php
  2.  
  3. $i = 1;
  4.  
  5. $str = 'aaa bb aaa ccc';
  6. $str = preg_replace( '/a/e', 'print "Znalazłem literę "a" numer " . $i++ . "<br />"', $str );
  7.  
  8.  
  9. ?>

(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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 04:18