Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyszukanie ciągu otoczonego znacznikami
mariusz g
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.03.2006

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


witam,

mam taki wzorzec:

@\[codee](.*?)\[/codee]@


działa jeśli jest wszystko w jednej linii:
[codee] ala ma kota[/codee]

jeśli jest w kilku to nie działa:
[codee] ala ma kota
ala ma kota
ala ma kota[/codee]

Proszę o pomoc
Pozdrawiam

Ten post edytował mariusz g 29.12.2011, 01:45:26
Go to the top of the page
+Quote Post
gargamel
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


Spróbuj dodać znak \n
Go to the top of the page
+Quote Post
Shili
post
Post #3





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


W razie czego istnieje również możliwość dodania modyfikatora s za @ w Twoim przypadku

http://www.php.net/manual/en/reference.pcr...n.modifiers.php
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


hmm inaczej Ci to nie zadziała - daj najlepiej

Kod
@\[codee\](.*)\[/codee\]@sU


flaga "s" - wtedy jako "." będą też brane pod uwagę takie znaki jak \n i \r wink.gif
flaga "U" - zmiast "?" - ungreedy



Ten post edytował Sephirus 29.12.2011, 08:50:45


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
mariusz g
post
Post #5





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.03.2006

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


witam,

bardzo dziękuję za pomoc
mam jeszcze jeden problem

jak do zamienionego ciągu zastosować funkcję htmlspecialchars
po prostu to co znajdzie wrzuca do div i do jego zawartości stosuje funkcję htmlspecialchars


  1. <?
  2. function create_php($text){
  3.  
  4. $wzorzec = '@\[CODEE](.*)\[/CODEE]@sU';
  5. $zamiana = "<div style=\"background: #EFEFFF; border: 1px solid #9797FF; padding: 5px 5px 5px 5px; box-shadow: 1px 1px 20px #CFCFFF;\">$1</div>";
  6. $text = preg_replace($wzorzec, $zamiana, $text);
  7. return $text;
  8. }
  9.  
  10. echo $plik1 = create_php(
  11. "
  12. <a href=\"index.php\">mmm</a>
  13. [CODEE]
  14. <a href=\"index.php\">mmm</a>
  15. [/CODEE]
  16. "
  17. );
  18. ?>


Ten post edytował mariusz g 29.12.2011, 19:00:16
Go to the top of the page
+Quote Post
Sephirus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Żeby osiągnąć zamierzony efekt musisz niestety inaczej podejść do zagadnienia. Najpierw znajdź wszystkie "code'y":

  1. function create_php($text){
  2.  
  3. $wzorzec = '@\[CODEE](.*)\[/CODEE]@sU';
  4.  
  5. if(preg_match_all($wzorzec, $text,$znalezione))
  6. {
  7.  
  8. // Masz już w zmiennej $znalezione wszystkie znalezione kody - teraz zamiana
  9.  
  10. for($i = 0; $i < count($znalezione[0]); $i++)
  11. {
  12. $kodWewnetrzny = $znalezione[1][$i]; // przechowa to co jest pomiędzy [codee] a [/codee]
  13. $kod = $znalezione[0][$i]; // przechowa cały ciąg razem z [codee]...[/codee]
  14.  
  15. $kodWewnetrzny = '<div style="background: #EFEFFF; border: 1px solid #9797FF; padding: 5px 5px 5px 5px; box-shadow: 1px 1px 20px #CFCFFF;">'.htmlspecialchars($kodWewnetrzny).'</div>'; // zamiana poprzez htmlspecialchars i owinięcie w diva...
  16.  
  17. $text = str_replace($kod,$kodWewnetrzny,$text); // zamieniamy konkretne wystąpienie [codee]
  18. }
  19. }
  20.  
  21. return $text; // już mamy zamienione ;)
  22. }
  23.  
  24.  


HTH! wink.gif

Ten post edytował Sephirus 30.12.2011, 09:02:59


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
mariusz g
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.03.2006

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


Działa idealnie
Dziękuję
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: 22.08.2025 - 08:20