jest sposób konwertowania elementów HTML na ich odpowiednie znaki. Coś podobnego do html_entity_decode()?
Próbuję utworzyć zwykły tekst bez elementów HTML z wyjścia TinyMCE.Konwersja jednostek PHP, takich jak – lub & scaron; do ich odpowiednich znaków
Odpowiedz
Zgodnie z user contributed notes w instrukcji, html_entity_decode()
wydaje się rzeczywiście przekonwertować tylko około 100 elementów zamiast ponad 200, które istnieją w specyfikacji.
Istnieje skrypt o nazwie html_entity_decode_full
, który wydaje się zapewniać dekodowanie wszystkich elementów, ale strona oryginalnego autora jest niedostępna. Here jest linkiem do repozytorium Drupala, które zawiera funkcję. Będzie to przekształcić wszystkie podmioty:
/* Test call */
echo decode_entities_full("– THIS IS A DASH", ENT_COMPAT, "utf-8");
/**
* Helper function for drupal_html_to_text().
*
* Calls helper function for HTML 4 entity decoding.
* Per: http://www.lazycat.org/software/html_entity_decode_full.phps
*/
function decode_entities_full($string, $quotes = ENT_COMPAT, $charset = 'ISO-8859-1') {
return html_entity_decode(preg_replace_callback('/&([a-zA-Z][a-zA-Z0-9]+);/', 'convert_entity', $string), $quotes, $charset);
}
/**
* Helper function for decode_entities_full().
*
* This contains the full HTML 4 Recommendation listing of entities, so the default to discard
* entities not in the table is generally good. Pass false to the second argument to return
* the faulty entity unmodified, if you're ill or something.
* Per: http://www.lazycat.org/software/html_entity_decode_full.phps
*/
function convert_entity($matches, $destroy = true) {
static $table = array('quot' => '"','amp' => '&','lt' => '<','gt' => '>','OElig' => 'Œ','oelig' => 'œ','Scaron' => 'Š','scaron' => 'š','Yuml' => 'Ÿ','circ' => 'ˆ','tilde' => '˜','ensp' => ' ','emsp' => ' ','thinsp' => ' ','zwnj' => '‌','zwj' => '‍','lrm' => '‎','rlm' => '‏','ndash' => '–','mdash' => '—','lsquo' => '‘','rsquo' => '’','sbquo' => '‚','ldquo' => '“','rdquo' => '”','bdquo' => '„','dagger' => '†','Dagger' => '‡','permil' => '‰','lsaquo' => '‹','rsaquo' => '›','euro' => '€','fnof' => 'ƒ','Alpha' => 'Α','Beta' => 'Β','Gamma' => 'Γ','Delta' => 'Δ','Epsilon' => 'Ε','Zeta' => 'Ζ','Eta' => 'Η','Theta' => 'Θ','Iota' => 'Ι','Kappa' => 'Κ','Lambda' => 'Λ','Mu' => 'Μ','Nu' => 'Ν','Xi' => 'Ξ','Omicron' => 'Ο','Pi' => 'Π','Rho' => 'Ρ','Sigma' => 'Σ','Tau' => 'Τ','Upsilon' => 'Υ','Phi' => 'Φ','Chi' => 'Χ','Psi' => 'Ψ','Omega' => 'Ω','alpha' => 'α','beta' => 'β','gamma' => 'γ','delta' => 'δ','epsilon' => 'ε','zeta' => 'ζ','eta' => 'η','theta' => 'θ','iota' => 'ι','kappa' => 'κ','lambda' => 'λ','mu' => 'μ','nu' => 'ν','xi' => 'ξ','omicron' => 'ο','pi' => 'π','rho' => 'ρ','sigmaf' => 'ς','sigma' => 'σ','tau' => 'τ','upsilon' => 'υ','phi' => 'φ','chi' => 'χ','psi' => 'ψ','omega' => 'ω','thetasym' => 'ϑ','upsih' => 'ϒ','piv' => 'ϖ','bull' => '•','hellip' => '…','prime' => '′','Prime' => '″','oline' => '‾','frasl' => '⁄','weierp' => '℘','image' => 'ℑ','real' => 'ℜ','trade' => '™','alefsym' => 'ℵ','larr' => '←','uarr' => '↑','rarr' => '→','darr' => '↓','harr' => '↔','crarr' => '↵','lArr' => '⇐','uArr' => '⇑','rArr' => '⇒','dArr' => '⇓','hArr' => '⇔','forall' => '∀','part' => '∂','exist' => '∃','empty' => '∅','nabla' => '∇','isin' => '∈','notin' => '∉','ni' => '∋','prod' => '∏','sum' => '∑','minus' => '−','lowast' => '∗','radic' => '√','prop' => '∝','infin' => '∞','ang' => '∠','and' => '∧','or' => '∨','cap' => '∩','cup' => '∪','int' => '∫','there4' => '∴','sim' => '∼','cong' => '≅','asymp' => '≈','ne' => '≠','equiv' => '≡','le' => '≤','ge' => '≥','sub' => '⊂','sup' => '⊃','nsub' => '⊄','sube' => '⊆','supe' => '⊇','oplus' => '⊕','otimes' => '⊗','perp' => '⊥','sdot' => '⋅','lceil' => '⌈','rceil' => '⌉','lfloor' => '⌊','rfloor' => '⌋','lang' => '〈','rang' => '〉','loz' => '◊','spades' => '♠','clubs' => '♣','hearts' => '♥','diams' => '♦','nbsp' => ' ','iexcl' => '¡','cent' => '¢','pound' => '£','curren' => '¤','yen' => '¥','brvbar' => '¦','sect' => '§','uml' => '¨','copy' => '©','ordf' => 'ª','laquo' => '«','not' => '¬','shy' => '­','reg' => '®','macr' => '¯','deg' => '°','plusmn' => '±','sup2' => '²','sup3' => '³','acute' => '´','micro' => 'µ','para' => '¶','middot' => '·','cedil' => '¸','sup1' => '¹','ordm' => 'º','raquo' => '»','frac14' => '¼','frac12' => '½','frac34' => '¾','iquest' => '¿','Agrave' => 'À','Aacute' => 'Á','Acirc' => 'Â','Atilde' => 'Ã','Auml' => 'Ä','Aring' => 'Å','AElig' => 'Æ','Ccedil' => 'Ç','Egrave' => 'È','Eacute' => 'É','Ecirc' => 'Ê','Euml' => 'Ë','Igrave' => 'Ì','Iacute' => 'Í','Icirc' => 'Î','Iuml' => 'Ï','ETH' => 'Ð','Ntilde' => 'Ñ','Ograve' => 'Ò','Oacute' => 'Ó','Ocirc' => 'Ô','Otilde' => 'Õ','Ouml' => 'Ö','times' => '×','Oslash' => 'Ø','Ugrave' => 'Ù','Uacute' => 'Ú','Ucirc' => 'Û','Uuml' => 'Ü','Yacute' => 'Ý','THORN' => 'Þ','szlig' => 'ß','agrave' => 'à','aacute' => 'á','acirc' => 'â','atilde' => 'ã','auml' => 'ä','aring' => 'å','aelig' => 'æ','ccedil' => 'ç','egrave' => 'è','eacute' => 'é','ecirc' => 'ê','euml' => 'ë','igrave' => 'ì','iacute' => 'í','icirc' => 'î','iuml' => 'ï','eth' => 'ð','ntilde' => 'ñ','ograve' => 'ò','oacute' => 'ó','ocirc' => 'ô','otilde' => 'õ','ouml' => 'ö','divide' => '÷','oslash' => 'ø','ugrave' => 'ù','uacute' => 'ú','ucirc' => 'û','uuml' => 'ü','yacute' => 'ý','thorn' => 'þ','yuml' => 'ÿ'
);
if (isset($table[$matches[1]])) return $table[$matches[1]];
// else
return $destroy ? '' : $matches[0];
}
Lub po prostu można użyć:
echo html_entity_decode('&', ENT_NOQUOTES, 'UTF-8');
I pierwotnie napisał the code that's pasted into Pekka's answer - to niemal całkowicie zbędne, z wyjątkiem szczególnych przypadków (głównie do usuwania podmiotów nieistniejących, które html_entity_decode()
nie dotyka ani nie przekształca się w elementy liczbowe, jeśli tworzysz kod XML, który nie jest kodowany w UTF-8).
TinyMCE ma opcję zwracania surowych (nie kodowanych HTML) danych wyjściowych, więc powinien to być twój pierwszy punkt połączenia. Spójrz na to entry in the TinyMCE manual, aby uzyskać więcej informacji na ten temat.
tak, "entity_encoding' jest tym, czego szukałem dzięki :). – martin
- 1. lista pustych znaków, takich jak â € ™
- 2. Jak wyodrębnić tematy w zdaniu i ich odpowiednich frazach zależnych?
- 3. Konwersja tablicy znaków do ArrayList znaków
- 4. Ramy lub narzędzie do "testowania jednostek rozproszonych"?
- 5. Konwertuj lub formatuj ciąg znaków do zmiennych (takich jak format(), ale w odwrotnej kolejności) w Pythonie
- 6. Testowanie jednostek w PHP?
- 7. Jak przekonwertować punkty kodowe Unicode do ich reprezentacji znaków?
- 8. Konwersja String na tablicę znaków
- 9. Błąd C++: Konwersja do zestawu znaków wykonania
- 10. Konwertowanie specjalnych znaków, takich jak ü i Ã, z powrotem do ich oryginalnych, łacińskich odpowiedników w alfabecie w C#
- 11. Czy istnieje prosty sposób w PHP do konwersji z ciągów takich jak "256M", "180K", "4G" do ich odpowiedników całkowitych?
- 12. Części wąsów w PHP - jak ich używać?
- 13. Czy istnieje dostępne API do reprezentowania różnych jednostek pozycji, takich jak KG, litr, metr, km itp.
- 14. Konwersja Dictionary.keyscollection do tablicy ciągów znaków
- 15. Konwersja Markdown + CSS do .doc lub .pdf
- 16. Konwersja drukowany wiadomość do wektora znaków
- 17. Jak dodać Menedżera jednostek do niestandardowej klasy lub usługi?
- 18. Odmowa uprawnień pomimo odpowiednich uprawnień przy użyciu PHP
- 19. Kody jednostek HTML do tekstu
- 20. Jak korzystać z ciągów znaków specjalnych, takich jak []?
- 21. Jak zmapować wiele jednostek do jednej tabeli?
- 22. Testowanie jednostek za pomocą podróbek lub makiet?
- 23. Konwersja StreamResult ciąg lub XML
- 24. Drukowanie znaków Unicode PHP
- 25. Konwersja mapy google do pdf w php
- 26. Konwersja tablicy PHP ciąg do tablicy
- 27. Czytanie znaków specjalnych, takich jak ÆÆÅ, na R (Rstudio)
- 28. Kiedy i jak jest dozwolona konwersja do wskaźnika znaków?
- 29. Jak modelujesz stół do konwersji jednostek?
- 30. PHP do zapisywania znaków tabulacji wewnątrz pliku?
To świetnie, wielkie dzięki! – martin