Czy istnieje podobna lub równoważna funkcja w Pythonie do funkcji PHP htmlspecialchars()? Najbliższą rzeczą, jaką znalazłem do tej pory, jest htmlentitydefs.entitydefs().Czy istnieje odpowiednik Pythona do funkcji PHP htmlspecialchars()?
Odpowiedz
Jeśli używasz django 1.0, to twoje zmienne szablonowe będą już zakodowane i gotowe do wyświetlenia. Korzystasz także z operatora safe
, jeśli nie chcesz, aby był on włączony globalnie.
Najbliższa rzecz, o której wiem, to cgi.escape.
Prawdopodobnie chcesz xml.sax.saxutils.escape:
from xml.sax.saxutils import escape
escape(unsafe, {'"':'"'}) # ENT_COMPAT
escape(unsafe, {'"':'"', '\'':'''}) # ENT_QUOTES
escape(unsafe) # ENT_NOQUOTES
Wystarczy popatrzeć na xml.sax.saxutils.quoteattr, to może być bardziej przydatne dla Ciebie
Moduł html.entities
(htmlentitydefs
dla Pythona 2.x) zawiera słownik codepoint2name
który powinien rób, co potrzebujesz.
>>> import html.entities
>>> html.entities.codepoint2name[ord("&")]
'amp'
>>> html.entities.codepoint2name[ord('"')]
'quot'
from django.utils.html import escape
print escape('<div class="q">Q & A</div>')
Głosuję za tym, ponieważ nie chcę parsować niczego, jak niektóre inne odpowiedzi, a nawet wyszukiwać i zamieniać, chcę mieć jedną funkcję, która zrobi to wszystko dla mnie. – paulmorriss
Myślę, że najprostszym sposobem jest po prostu użyć wymienić:
text.replace("&", "&").replace('"', """).replace("<", "<").replace(">", ">")
PHP ucieka tylko te cztery podmioty z htmlspecialchars. Zauważ, że jeśli ustawiłeś ENT_QUOTES w PHP, musisz zamienić cudzysłów na & # 039; zamiast & quot ;.
Opierając się na @ garlon4 odpowiedź można definiować własne htmlspecialchars(s)
:
def htmlspecialchars(text):
return (
text.replace("&", "&").
replace('"', """).
replace("<", "<").
replace(">", ">")
)
- 1. Czy istnieje odpowiednik pythona funkcji qchisq R?
- 2. Czy istnieje odpowiednik Java funkcji http_build_query PHP?
- 3. Czy istnieje odpowiednik scala do Pythona listowego
- 4. Czy istnieje odpowiednik Pythona dla funkcji próbki R()?
- 5. Czy istnieje odpowiednik w C++ funkcji explode() PHP?
- 6. Odpowiednik PHP metody "str.format" Pythona?
- 7. Czy istnieje odpowiednik funkcji SQL Server NewId()?
- 8. czy istnieje odpowiednik funkcji egipskiej Staty?
- 9. Czy istnieje odpowiednik migracji Railsowych PHP?
- 10. Czy istnieje odpowiednik MySQL dla PHP preg_replace?
- 11. Czy istnieje odpowiednik funkcji fpinfo() z ColdFusion()
- 12. Czy istnieje odpowiednik zestawu Java w php?
- 13. Czy istnieje odpowiednik języka sqlite3_limit w PHP?
- 14. PHP: odpowiednik funkcji SUBSTRING_INDEX MySQL?
- 15. Odpowiednik JSP do funkcji PHP include()?
- 16. Czy istnieje odpowiednik javascript()?
- 17. Czy istnieje odpowiednik funkcji bsxfun MATLAB w python?
- 18. Czy istnieje odpowiednik funkcji Python dla funkcji smooth.spline w R
- 19. Czy PHP ma odpowiednik składni rozumienia listy Pythona?
- 20. Czy istnieje odpowiednik Scala dla rozpakowywania listy Pythona (a.k.a. "*")?
- 21. Czy istnieje odpowiednik hash_hmac PHP w Pythonie/Django?
- 22. Odpowiednik PHP dla funkcji parseInt?
- 23. Czy istnieje odpowiednik std :: vector C++ w PHP?
- 24. Czy istnieje odpowiednik Pythona dla interpolacji ciągów Ruby?
- 25. Czy istnieje odpowiednik Pythona dla klasy AWT robota Java?
- 26. Czy istnieje odpowiednik C# w PHP_key_key_exists?
- 27. Czy istnieje odpowiednik str_replace w C++?
- 28. Czy istnieje odpowiednik Pythona operatora X w języku Perl?
- 29. Czy istnieje możliwość zamiany (monkeypatch) funkcji PHP?
- 30. reverse htmlspecialchars
Wydaje się, że istnieje więcej niż jeden oczywisty sposób to zrobić! O noes! –