Autor | Zpráva | ||
---|---|---|---|
hubipe Profil |
#1 · Zasláno: 24. 8. 2005, 11:00:08
Chtěl jsem si v PHP napsat funkci, která mi ve větě jako:
"Řekl jsem mu ať to nedělá ale on: "Tak to ne, já to dělat budu, máma mi říkala: "Udělej to.", a já se podle toho taky budu řídit!", tak jsem šel dál." Sama předělá úvozovky na dolní, pak na ' a naposled třeba na francouzské << >>. Jak to mám ale proboha udělat? Jak rozpoznám, kde přímá řeč začíná, resp. končí? Máte-li nápady... S <q>Jsem to zkoušel, ale v FF mi to všude dělalo jen " a v MSIE už vůbec nic (chybý generovaný obsah...). Nevíte? Pls poraďte. Díky |
||
Cody Profil |
#2 · Zasláno: 24. 8. 2005, 11:07:25
|
||
hubipe Profil |
#3 · Zasláno: 24. 8. 2005, 12:05:14
>>> Cody
To taky vim, jaký mám používat entity, ale ptám se na něco jinýho: Jak mám poznat, kde mám doplnit dolní ", kde dolní ' a kde << resp. horní ", horní ' a >> ? Prostě jak program rozpozná, kde končí jaká úvozovka? Podle teček / vykřičníků / otazníků to nelze. (V jedné přímé řeči může být více vět.) |
||
Leo Profil |
#4 · Zasláno: 24. 8. 2005, 12:06:33
Jedina pomoc jsou regularni vyrazy, vysel ted o nich podrobny serial na www.interval.cz, Leo
|
||
Fred Profil |
#5 · Zasláno: 24. 8. 2005, 12:18:56
Nevím, jestli to k něčemu bude, ale tohle jsem si udělal v js a css
//--------js pro ie----------------- function uvozovky(){ if(document.uniqueID){ var doc=document.getElementById(id)('doc') var q=doc.getElementsByTagName('q') for(var i=0;i<q.length;i++){ q[i].childNodes[0].nodeValue='„'+q[i].childNodes[0].nodeValue+'“'; }}} /*------css opera a gecko-------*/ q:before { content: "„"; } q:after { content: "“"; } |
||
hubipe Profil |
#6 · Zasláno: 24. 8. 2005, 12:19:13
Znám regulérní výrazy, ale jak rozeznat, co která rovná (") úvozovka ohraničuje?
|
||
hubipe Profil |
#7 · Zasláno: 24. 8. 2005, 12:21:55
>>> Fred
Ano, to je pěkné, ale vůbec není mysleno na vnořené úvozovky: Větu "Jsem řekl: "Jak se máš?" odpověděla: "Dobře", sem šel dál..." by to přeložilo jako „Jsem řekl: “Jak se máš?„ odpověděla: “Dobře„, sem šel dál...“ A to je špatně... |
||
Fred Profil |
#8 · Zasláno: 24. 8. 2005, 12:36:43
hubipe Rozumím, taky mě ta věta dostala, trochu jsem hledal http://interval.cz/clanek.asp?article=2017 zdá se to neřešitelný. Kdyby to ale asi měl napsat, asi bych to naspsal takhle (cite nebo blockqute).
<p> Řekl jsem mu ať to nedělá ale on: <cite>Tak to ne, já to dělat budu, máma mi říkala: <q>Udělej to.</q>, a já se podle toho taky budu řídit!</cite>, tak jsem šel dál. </p> Sice to validátor zkousne, ale (cite nebo blockqute) jestli to správně chápu slouží k citaci zdroje. |
||
hubipe Profil |
#9 · Zasláno: 24. 8. 2005, 13:30:49
Takže pomocí HTML to nejde. Jde to teda aspoň pomocí programovacích jazyků?
|
||
hubipe Profil |
#10 · Zasláno: 24. 8. 2005, 13:43:49
Ještě poznámka:
V CSS se může používat namísto vlastnostem content (:before a :after), vlastnost quotes: cite { quotes: '„' ' “' '‚' '‘' '«' '»' } cite:before { content: open-quote } cite:after { content: close-quote } Tohle ale zatím není moc známé, jelikož to moc nefunguje. Vizte příklad: http://other.petrhubik.cz/quotes.html |
||
Fred Profil |
#11 · Zasláno: 24. 8. 2005, 14:09:26
Tohle půjde i v gecku
q { quotes: '„' ' “' } q q{ quotes: '‚' '‘' } q q q{ quotes: '«' '»' } IE bych dořešil javascriptem, nebo .htc |
||
hubipe Profil |
#12 · Zasláno: 24. 8. 2005, 14:13:08
Co je .htc? .htaccess?
|
||
Fred Profil |
#13 · Zasláno: 24. 8. 2005, 14:21:37
hubipe Ne to je koncovka souboru htc, je to javascript, který se načítá do css pomocí proprietárního behavior, např. do css dáš body{behavior:url("hover.htc");} a IE to načte a doplní vlastnosti co neumí. Díky nějaké chybě tohle funguje i pokud je javascript vypnutý, ale je to pěkná prasárna. Nefunguje to pokud jsou vyplé active-x, nebo v některých chytrých IE nadstavbách s vypnutým js, např. greenbrowser. Syntaxe je stejná jako v js, až na způsob připojení té události a nějaké drobnosti. V sp2 je třeba navíc posílat to htc s hlavičkou text/x-component aby to neblokovala ta pitomá hláška. Mrkni se třeba sem http://www.xs4all.nl/~peterned/csshover.html a htc http://www.xs4all.nl/~peterned/scripts/csshover.htc
|
||
Fred Profil |
#14 · Zasláno: 24. 8. 2005, 14:48:35 · Upravil/a: Fred
Já jsem ale ichtyl, s komárem na velblouda, co takhle http://css.maxdesign.com.au/listutorial/07.htm pro IE. Když dáš těm vnitřním classy (těch vnořených tolik nebude) tak si jenom nakreslíš obrázky uvozovek ty budou před <q> a před všechny uzavírací </q> bych dal prázdné spany, nějakým replacem a k tomu styl pro ie
q.obalovaci{bakcground:url(uvoz1.gif)}/*ie*/ q.obalovaci span{bakcground:url(uvoz1-end.gif)}/*ie*/ q.vnitrni{bakcground:url(uvoz2.gif)}/*ie*/ q.vnitrni span{bakcground:url(uvoz2-end.gif)}/*ie*/ q.vnoreny{bakcground:url(uvoz3.gif)}/*ie*/ q.vnoreny span{bakcground:url(uvoz3-end.gif)}/*ie*/ q[class] {background:none}/*ostatni*/ q { quotes: '„' ' “' }/*ostatni*/ q q{ quotes: '‚' '‘' }/*ostatni*/ q q q{ quotes: '«' '»' } /*ostatni*/ |
||
hubipe Profil |
#15 · Zasláno: 24. 8. 2005, 14:59:46
Jasny, takže jsme se dobrali řešení pro formátovací značky <q></q> (resp. další -- cite, ...).
Jak ale v textu, kde jsou jenom uvozovky, nahradím za <q></q> (pomocí PHP, JS, ...)? To už není tak jednoduchý, že? |
||
Fred Profil |
#16 · Zasláno: 24. 8. 2005, 17:52:40 · Upravil/a: Fred
No to rozhodně jednoduchý nebude, zkoušel jsem to a nefungovalo to dobře, protože čeština zjevně používá těch uvozovek více než se píše na JPW. Něco jsem vybastlil, ale zjistil, že to nedělá s tím tvým textem to co jsem čekal (btw s uvozovkama to jde překopírovat jen v Opeře), protože ty zavírací uvozovky se takhle nejspíš nepíšou, jestli tedy chápu ty zápisy
l+neco+qou levé r+neco+quo pravé b+neco+qou oboje Tady je podrobná tabulka interpunkce v unicode http://www.alanwood.net/unicode/general_punctuation.html Tady je to co jsem zkoušel:http://xy.wz.cz/hbp/ když vložíš ten svůj text převede dobře jen ty začátky a francouzské, mrkni se do zdrojáku jsou tam komentáře. Ty problémové znaky by se asi musely konvertovat ještě jednou, %2 sudá lichá Je to fakt detektivka, nerad sem dávám polotovary, ale s tímhle bych se musel párat hodně dlouho :-) |
||
Fred Profil |
#17 · Zasláno: 24. 8. 2005, 17:54:13
Jo ještě něco jsem chtěl, kdo bude formátovat ty lidi co to píšou? On to asi bude taky problém napsat správně vstupy.
|
||
hubipe Profil |
#18 · Zasláno: 24. 8. 2005, 21:49:50
My si asi 100% nerozumíme...
Lidi budou psát jen ". Potřebuju jen rozeznat, která úvozovka začíná větu, která je vnořená, která ukončuje vnořenou větu a která to celý končí. Prostě to co by člověk udělal normálně, potřebuju naučit stroj... Prvním pokusem jsem udělal akorát to, že jsem si spočítal počet " a podle toho vnořoval, jenomže pak jsem si uvědomil chybu. Stroj by nerozeznal tyto dva případy: "Náš stroj je pečlivě ukryt na "bezpečném" místě..." a "Jak se máš?" zeptal se. "Dobře, celkem ..." První větu by to interpretovalo dobře: „Náš stroj je pečlivě ukryt na ‚bezpečném‘ místě...“ zatímco druhou: „Jak se máš?‚ zeptal se. ‘Dobře, celkem ...“ Ale začínám mít pocit, že stroj to nemůže odhalit, protože mu "chybí" cit pro jazyk (český). |
||
Leo Profil |
#19 · Zasláno: 24. 8. 2005, 22:07:47
"Ale začínám mít pocit, že stroj to nemůže odhalit, protože mu "chybí" cit pro jazyk (český)."
Vypada to tak... Leo |
||
Fred Profil |
#20 · Zasláno: 25. 8. 2005, 00:17:43
hubipe Už rozumím, když se vrátím na úplný začátek threadu je mi to jasný.
|
||
hubipe Profil |
#21 · Zasláno: 25. 8. 2005, 12:49:27
Ještě jedna podotázečka:
Francouzské úvozovky se správně píší «text», nebo »text«? |
||
Fred Profil |
#22 · Zasláno: 25. 8. 2005, 13:02:00 · Upravil/a: Fred
laquo = « l jako left quo jako quotes takže 1. varianta je správně
|
||
Yuhů Profil |
#23 · Zasláno: 25. 8. 2005, 15:04:13
BTW: někde výše se probíraly htc. Napsal jsem o tom pro Interval článek
http://interval.cz/clanek.asp?article=1416 IMHO jediný český zdroj na téma htc. |
||
Fred Profil |
#24 · Zasláno: 25. 8. 2005, 18:13:17
Yuhů Pěkný článek, dík.
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0