Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]highlight_string() nie działa z innymi funkcjami
Forum PHP.pl > Forum > Przedszkole
Kloc
Zbudowałem funkcję filtrującą i problem ma taki, że gdy dodam funkcję kolorującą składnię php- highlight_string() to reszta przestaje działać.

  1. function zamien($code){
  2. $code = htmlspecialchars($code);
  3. $code = nl2br($code);
  4. $code = highlight_string($code, true);
  5. return $code;
  6. }


Gdy przepuszczę poniższy kod przez tą funkcję to wywala mi jakieś bohomazy i dziwne znaki. Nie ma żadnych błędów.

Kod
'<?Php
phpinfo();
    echo "blabla";
?>

<ul id="ul">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>';


to mi wywala
Kod
&lt;?Php <br />
phpinfo(); <br />
    echo &quot;fgfgff&quot;; <br />
?&gt;<br />
<br />
&lt;ul id=&quot;ul&quot;&gt;<br />
    &lt;li&gt;1&lt;/li&gt;<br />
    &lt;li&gt;2&lt;/li&gt;<br />
    &lt;li&gt;3&lt;/li&gt;<br />
&lt;/ul&gt;


a jak zrobię z funkcją tak


  1. function zamien($code){
  2. $code = highlight_string($code, true);
  3. return $code;
  4. }


To wszystko działa prawidłowo, czyli tak jakby ona zastąpiła mi pozostałe. Czy to jest możliwe, bo ona podobno tylko koloruje składnie?.
I dlaczego nie działa z pozostałymi tak jak wyżej?
mmmmmmm
Doczytaj co robi htmlspecialchars
Kloc
Zamienia niebezpieczne znaki na bezpieczne. Ale gdy nie ma highlight_string to wszystko dziala normalnie.
Nie wiem dlaczego one ze sobą kolidują.
Pyton_000
Bo funkcja kolorująca sama zamienia znaki na encje. Zobacz sobie przykład 1 z manuala.
Kloc
Chyba wiem o co chodziło. Htmlspecialhars() zamienia znaczki nie bezpieczne na bezpieczne. czyli < w wyglądzie jest dalej < ale już nie ma tego znaczenia.
A heightlight_string() przyjmuje tylko string o normalnym znaczeniu, ja tą funkcję wywołuję już za Htmlspecialhars() i string już nie ma prawidłowego znaczenia i dlatego heightlight_string() jeszcze raz to miel i oto taki efekt. Jak wywołam ją przed Htmlspecialhars() to działa prawidłowo, lecz wywala kod, który ma kolorować składnię, ale to już wina Htmlspecialhars().
Czyli z praktyki wyszło mi, że funkcję htmlspecialhars() i nl2br() można zastąpić jedną heightlight_string().
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.