Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]preg_replace() nie bierze wyrażenia
Kloc
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 8
Dołączył: 8.06.2014

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


Witam. Dziś mam problem taki, że preg_replace nie może przerobić wyrażenia i nic nie wywala.

Robię tak i nie działa
  1. $string = preg_replace('#('.htmlspecialchars('<?php').')#i', htmlspecialchars_decode('<span style="color:red;">').htmlspecialchars('!\\1').htmlspecialchars_decode('</span>'), $string);


A to działa i chodzi mi o ten sam efekt
  1. $string = str_replace(htmlspecialchars('<?php'), htmlspecialchars_decode('<span style="color:red;">').htmlspecialchars('!<?php').htmlspecialchars_decode('</span>'), $string);


W pierwszym przykładzie błąd leży w zapisie- składni, a muszę użyć preg_replace bo tam sobie mogę uwzglądnić wielkość liter 'i' i nie muszę robić tego samego 2 razy w str_replace.
Robiłem to już na wszystkie sposoby jakie mi przychodzą do głowy i nic.
Go to the top of the page
+Quote Post
Yaneck
post
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.07.2014

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


Pies jest pogrzebany tutaj" '<?php'. Z jakiegoś względu analiza składni pomija apostrof zamykający i cała reszta jest traktowana jak nie-kod. Jeżeli z napisu usunęlibyśmy znak "<" lub "?" - problem składni znika, chociaż sens wyrażenia jest dramatycznie zmieniony.

Go to the top of the page
+Quote Post
Kloc
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 8
Dołączył: 8.06.2014

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


Dokladnie, zakodowane "<?php" przez htmlspecial_chars() to nie to samo co zwykłe "<?php", a ja musze mieć tam właśnie to "inne", bo w stringu, w którym ma to zostać zmienione jest też "inne".
A jak do wyrażenia wstawię zwykłe "<?php"
to go nie zmieni, bo w stringu nie ma zwykłego "<?php".

htmlspecial_chars('<?php') !=== <?php

Jest jakis sposób na pominięcie tego np. jakąś flaga dla preg_replace() lub cos innego?
Go to the top of the page
+Quote Post
by_ikar
post
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Twoje htmlspecialchars wypluwa coś takiego:

Kod
&lt;?php


Gdzie znak zapytania jest znakiem specjalnym. Lepiej powiedz co chcesz osiągnąć.
Go to the top of the page
+Quote Post
Kloc
post
Post #5





Grupa: Zarejestrowani
Postów: 115
Pomógł: 8
Dołączył: 8.06.2014

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


Chce pololorować znaczek "<?php"/"<?PHP", który jest zakodowany przez htmlspecial_chars() na kolor czerwony (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
by_ikar
post
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


  1. <?php
  2.  
  3. $str = '<?php
  4.  
  5. $var = "test";
  6.  
  7. //some comment
  8.  
  9. /** some function **/
  10. function foo()
  11. {
  12. return true;
  13. }';
  14.  
  15.  
  16. $callback = function($matches) {
  17. return '<span style="color:red;">'.$matches[0].'</span>';
  18. };
  19.  
  20. $res = preg_replace_callback('#&lt;\?php#i', $callback, htmlspecialchars($str));
  21.  
  22.  
  23. echo nl2br($res);


Heh oczywiście forum zmieniło

Kod
&lt;\?php


na

Kod
<\?php


Więc nie zapomnij tego poprawić u siebie. Dodatkowo polecam ci już zrobienie czegoś takiego w JS, co by nie potrzebnie męczyć serwer. Jest kilka fajnych już gotowych libów, z czego najbardziej przypadła do gustu mi ta: https://code.google.com/p/google-code-prettify/

Ten post edytował by_ikar 29.07.2014, 12:41:56
Go to the top of the page
+Quote Post
Kloc
post
Post #7





Grupa: Zarejestrowani
Postów: 115
Pomógł: 8
Dołączył: 8.06.2014

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


Użyje chyba bibloteki GeSHi i zostawię w niej tylko potrzebne mi języki.

qbnz.com/highlighter/
Go to the top of the page
+Quote Post
Turson
post
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Zdecydowanie lepsze wyjście
Go to the top of the page
+Quote Post
Pyton_000
post
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


lub highlight_string
Go to the top of the page
+Quote Post

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: 25.08.2025 - 02:49