Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][XML] wewnętrzny kod HTML w znacznikach XML
Forum PHP.pl > Forum > Przedszkole
przemdro
Postanowiłem w swoich skryptach PHP drukować kod wynikowy w XMLu zamiast HTMLu. Znacznie skraca to dokument PHP, i daje możliwość łatwej zmiany wyglądu strony przez podmienianie arkuszy XSL.
Jest tylko jeden problem. Czasem np. w postach, występuje wewnętrzny kod HTML. Żeby w ogóle przeszedł trzeba go zakodować:
Kod
$x="<b>przykładowy tekst</b>";
  $x=str_replace('&', '&amp;', $x);
  $x=str_replace('"', '&quot;', $x);
  $x=str_replace('<', '&lt;', $x);
  $x=str_replace('>', '&gt;', $x);
echo '<notka>'.$x.'</notka>';

Chciałbym w taki sposób wyświetlić zawartość znacznika '<notka>', tak żeby jej zawartość odzyskała własność HTML.

Jedyny pomysł jaki przyszedł mi do głowy to JavaScript.
(Skracając tak może wyglądać kod strony wydrukowanej przy użyciu XSLa... Chodzi o to żeby zawartości niektórych elementów przywrócić własności HTML.)
Kod
<html><head>
  <script type="text/javascript">
  <!--
  function zmienTeksty(){
  var  = document.getElementById('notka');
  e.innerHTML=e.innerHTML.replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&amp;/g, "&").replace(/&amp;/g, "&");
  }
  -->
  </script>
  </head>
  
  <body onload="zmienTeksty();">
  <p id="notka">&lt;b&gt;echo&lt;/b&gt;</p>
  <p id="notka">&lt;i&gt;hi hi&lt;/i&gt;</p>
  <p id="notka">&lt;u&gt;paf&lt;/u&gt;</p>
  </body></html>

Skrypt jednak nie do końca działa - odkodowuje HTML tylko w pierwszym znaczniku oznaczonym id="notka".

a ) jak zrobić żeby ten skrypt działał we wszystkich miejscach?
B ) czy jest jakieś lepsze rozwiązanie tego problemu?
vokiel
Kod HTML zapisuj do znacznika w CDATA:
Kod
CDATA section starts with "<![CDATA[" and ends with "]]>":

przykład:
  1. <ProductName><![CDATA[<strong>ale mocne</strong>i tu link <a href="htto://forum.php.pl/" />forum</a>]]></ProductName>
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.