Jestem zainteresowany problemami z siecią w Internecie pod numerem microtypography.Parsowanie kodu HTML w celu naprawienia problemów związanych z mikrotypologią i glifami
Chcę narzędziem naprawić:
- Cytaty
- „(& # 8220;) otwarcia cytat (zamiast„)
- ”(& # 8221;) zamykający cudzysłów (zamiast „)
- Apostrophe
- ”(& # 8217;) apostrofu (zamiast„)
- kreski i łączniki
- - (& # 8211; lub & ndash;) en dash, używane dla zakresów, np. "13-15 listopada" (zamiast -)
- - (& # 8212; lub & mdash;) em dash, używane do zmiany myśli, np. „Star Wars to, jak każdy wie, niesamowite.” (Zamiast - lub -)
- Wielokropek
- ... (& # 8230; lub & hellip;) pozioma elipsa, używany do wskazania pominięcie lub pauza (zamiast ...)
- i bardziej \ o/
Wszystkie te poprawki zależą od języka treści. Na przykład w języku francuskim musimy dodać niezabezpieczoną przestrzeń (nie łamiąc) przed każdym skomponowanym glifem (:
, ;
, …
, ?
, !
, ...), a nasze cytaty są "podobne do tego".
Istnieje wiele ograniczeń dla takiego narzędzia:
- nie może edytować dowolny kod HTML wewnątrz chronione Tagi (
pre
,code
...) - musi być szybka (stosowany na wyjściu CMS)
- to nie może łamać HTML
- i tak dalej.
Istnieją już pewne narzędzia na rynku:
- http://michelf.ca/projects/php-smartypants/typographer/
- http://kingdesk.com/projects/php-typography/
- http://code.google.com/p/typogrify/
Są one mniej lub bardziej oparte na omnibus, A 2005 lib, nie przetestowany, nieudokumentowany, parsujący HTML ręcznie i nie radzący sobie z innymi regułami niż angielski. Do diabła nie.
Więc moje pytania to:
- Czy znasz godnej narzędzia jak to?
- Jak mogę to zrobić? Mam już POC przy użyciu DomCrawler, ale nie jestem przekonany. Jaki jest najlepszy sposób analizowania i edytowania HTML w PHP?
Edit lipca 2013: Mam opracowane JoliTypo z badań i wiedzy zdobytych I z tym problemem. Żadna istniejąca biblioteka nie robiła tego, co chciałem.
Świetne pytanie, chociaż zastanawiam się, czy to nie jest rzeczy, które lepiej byłoby przetwarzać w miejscu, w którym dane są zapisywane, a nie w punkcie, w którym są wysyłane?Zwłaszcza jeśli masz dużo tekstu (co jest najbardziej użyteczne), trudno wyobrazić sobie przetwarzanie w celu uzyskania szczegółów (np. Rozróżnienie między odpowiednim em i en dash) w sposób wystarczająco wydajny, aby wygrał " t drastycznie zwiększa czas ładowania strony. –
@MichaelCSchuller To powinno być obsługiwane przez system IMO pamięci podręcznej. Wydaje mi się, że edytowanie treści nadesłanych przez użytkowników i utrzymywanie ich jest złym pomysłem, ponieważ nie ma możliwości odzyskania wersji z zapisanym typem. Przechowywanie zarówno tekstu użytkownika, jak i tekstu konwertowanego może być rozwiązaniem problemów związanych z wydajnością. – Damien
Oczywiście wiąże się to z ryzykiem, że stosunek wyniku do danych wejściowych stanie się nieco nieprzejrzysty dla użytkownika wprowadzającego oryginalny tekst, ale przypuszczam, że jest to kwestia filozoficzna, a nie techniczna. Jednym z powodów, dla których uważam, że takie rzeczy jak Markdown są tak dobrym rozwiązaniem do formatowania wprowadzania tekstu, jest to, że dokładnie wiesz, jakie transformacje zostaną zastosowane (i jak można powiedzieć, odzyskasz oryginał po jego wprowadzeniu). –