2011-11-21 12 views
5

Mam ciąg w moim kod, jak na poniższym przykładzie:ciąg PHP nie pozwala < and > znaków

<?php 
$find = '<tag'; 
$string = 'blah blah <tag=something>'; 
?> 

dość proste, ale gdy próbuję echo struny, to nie lubić < lub> postacie. Wszystko to get echo'ed jest:

bla bla

Więc zasadniczo Zgaduję muszę uciec tych znaków, aby je do pracy w PHP, ale nie jestem pewien, jak dokładnie. Używam tego dla systemu szablonów, więc w pliku HTML plik może być włączone za pomocą:

<include="filename.html"> 

Więc nie muszę pokazać < i> znaków na ekranie w dowolnym momencie, Po prostu muszę przeczytać plik, znaleźć wystąpienia tych tagów i zrobić trochę magii. Mam całą tę część działającą, ale to tylko dowolny ciąg, który zawiera więcej niż/mniej niż operatory, które nie działają poprawnie.

Wszelkie pomysły?

+0

Czy wyświetlasz źródło strony lub po prostu widzisz efekt wizualny wyświetlany przez przeglądarkę? –

+0

Nigdy nie trzeba wyświetlać ekranu, jest on po prostu przechowywany w zmiennej łańcuchowej. – Amo

+0

możliwy duplikat [Wydrukuj symbole mniejsze i większe niż w PHP] (http://stackoverflow.com/questions/6916023/print-less-than-and-greater-than-symbols-in-php) – mario

Odpowiedz

3

Musisz używać znaków HTML, aby uniknąć przekształcenia ich w HTML.

tak:

echo htmlspecialchars("<hello>"); 
+4

Z dokumentów PHP, do których się odwołałeś: * Zwraca ciąg znaków z ukośnikami odwrotnymi przed znakami, które muszą być cytowane w zapytaniach do bazy danych itp. * Jaka część tego ma związek z tym pytanie? –

+0

Whoops! @David ma rację: – tekknolagi

+0

ta funkcja w ogóle nie wpływa na nawiasy kwadratowe. Jest to przeznaczone dla ucieczkowych 'i' wewnątrz stringów –

8

W PHP można generować znaczników HTML, więc trzeba znaleźć sposób na odróżnienie znaków elementu HTML (< &>). W HTML istnieje specjalna sekwencja znaków, które są nazywane HTML entities. Opisane są za pomocą znaku ampersand, pewnego rodzaju skrót i kończą się średnikiem.

Oto kilka przykładów:

&gt;  : > (greater-than) 
&lt;  : < (less-than) 
&amp; : & (ampersand) 
&raquo; : » (right angle quote marks) 
&eacute; : é (e acute) 

Prawie wszystkie znaki mogą być reprezentowane z tych podmiotów, ale szybko staje się nużące. Musisz tylko pamiętać o numerach <i> oraz o & dla adresów URL.

Twój kod powinien zostać przepisany w ten sposób, jeśli masz zamiar pokazać znaki mniejsze/większe niż.

<?php 
$find = '&lt;tag'; 
$string = 'blah blah &lt;tag=something&gt;'; 
?> 

Jak wspomniano w innych odpowiedzi, można użyć funkcji htmlspecialchars() do konwersji znaków w zmiennej (na przykład z danych wprowadzonych przez użytkownika).

<?php echo htmlspecialchars($string); ?> 

wyświetli blah blah <tag=something> do przeglądania w przeglądarce internetowej. Inaczej, gdybyś używał PHP na przykład w linii poleceń, nie musiałbyś używać tej funkcji.

Powiązane problemy