Autor Zpráva
hubipe
Profil
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
http://www.jakpsatweb.cz/html/entity-vsechny.html
hubipe
Profil
>>> 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
Jedina pomoc jsou regularni vyrazy, vysel ted o nich podrobny serial na www.interval.cz, Leo
Fred
Profil
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
Znám regulérní výrazy, ale jak rozeznat, co která rovná (") úvozovka ohraničuje?
hubipe
Profil
>>> 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
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
Takže pomocí HTML to nejde. Jde to teda aspoň pomocí programovacích jazyků?
hubipe
Profil
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
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
Co je .htc? .htaccess?
Fred
Profil
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
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
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
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
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
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
"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
hubipe Už rozumím, když se vrátím na úplný začátek threadu je mi to jasný.
hubipe
Profil
Ještě jedna podotázečka:

Francouzské úvozovky se správně píší «text», nebo »text«?
Fred
Profil
laquo = « l jako left quo jako quotes takže 1. varianta je správně
Yuhů
Profil
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
Yuhů Pěkný článek, dík.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0