Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [wyrazenia regularne] <?php i ?>
czerpakzmiedzi
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


Mam problem z wyrażeniem regularnym, które ma wyciągać wszystko spomiedzy <?php i ?>. Niestety problem pojawia się wówczas kiedy użytkownik wpisze pomiędzy nimi np. '?>'; wtedy wszystko się wali. Próbowałem tak : ^<?php(.*^'?>')?>$
ale wtedy nie działa jeśli kod to np. 'shshshsh ?> dueufuuvfu'. Bardzo prosze o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
-lukasamd-
post
Post #2





Goście







Może spróbuj tak:

  1. <?php
  2. $ciag = '<?php ciploaldjdf ?> jdfidfndfjdf ?> fdfggffggff ?>';
  3. $wzorzec = '/<\?php\s.+\\s?>/';
  4.  
  5. $zmiana = preg_replace($wzorzec, 'TEST', $ciag);
  6.  
  7. echo $zmiana;
  8. ?>


W tym przykładowym kodzie w efekcie otrzymuje się ciąg TEST, więc pomija wszelkie wewnętrzne znaczniki.
Go to the top of the page
+Quote Post
Zyx
post
Post #3





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Oto wyrażenie twe:

Kod
preg_match_all('#(\<\?php(.|\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\')+\?\>)#', $str, $found);


Robi dokładnie to, co chcesz osiągnąć: pomija wystąpienia w cudzysłowach i uwzględnia backslashe.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
czerpakzmiedzi
post
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


Zyx mógłbyś bardziej rozwinąć o ch chodzi w tym wyrażeniu. Jest bardzo skomplikowane i nie bardzo go rozumiem.
Go to the top of the page
+Quote Post
Zyx
post
Post #5





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Ależ wręcz przeciwnie, ono jest prościutkie.

1. Wyszukaj wszystkie sekwencje rozpoczynające się od "<?php"
2. Następnie może iść znak lub sekwencja w APOSTROFACH powtórzone przynajmniej jeden raz.
- Sekwencja w apostrofach to ciąg znaków, który rozpoczyna się apostrofem i kończy apostrofem niepoprzedzonym znakiem backslasha.
3. Na końcu musi być sekwencja "?>"

Wypadałoby w sumie dodać jeszcze sekwencję w cudzysłowach do podpunktu drugiego, ale jest to kwestia po prostu zastąpienia występień \' przez " i wklejenia obok dotychczasowej treści jako alternatywa.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 00:27