Jde obarvit text (CSS) na základě textového řetězce?
Denně dělám monitoring médií. Přijde mí XML soubor, ten si nastyluji a pak z něj vybírám články (tak 10 z 50). Bylo by pro mě hodně přehledné, kdybych si mohl obarvit URL, jelikož mohu vybírat pouze články, kde URL je. Problém je v tom, že nemá URL žádný identifikátor a je součástí textu článku
zdroj
s CSS
Jde to nějak udělat?
A skusal si vlozit v css nieco take ako: a:link {color:#9E0404; text-decoration:none}
Není to link. Ten bych uměl. Je to jen text.
HTML:
<span class="něco"></span>
CSS:
.něco {color:red; text-decoration:none;}
Pokud tedy dobře chápu záměr. :)
Dyk píšu, že tam není identifikátor (to "neco") a je to jen textový řetězec. Kdyby tam byl, dávno to mám.
vsak tu istu URL mas v tagu Odkaz. Alebo to nie je pravidlom?
Ako ten XML "stylujes"? Prebehnes to nejakou XSLT sablonou? Videl by som to potom len na nejake pouzitie regexu.
Nahoře to je pouze obarvené. Čtu to však odspodu
Ten XML soubor by šel vyfiltrovat, aby zbyly jen články s odkazem, např. pomocí PHP DOM.
Tam právě nejsou odkazy. Ty dělám až já ppři vkládání.
Takže změna:
Ten XML soubor by šel vyfiltrovat, aby zbyly jen články s URL, např. pomocí PHP DOM.
Nevkládám všechny články, co mají URL. Z těch 50 má URL třeba 30 a z těch 30 vkládám 10 sem
monitoring-medii
Navíc tam jsou články z rozhlasu, či televize a tím bych je vyhodil. Přitom ty vkládám také (celé, jelikož nemají URL - u těch s URL jen perex a odkaz).
A je tam teda alespon vzdy to URL| pred tim okazem?
Jo právě že tohle tam je vždy a byla by to identifikace. V podstatě můj dotaz.
Muzes sem vlozit jedno takove XML, at mam na cem testovat? Neco bych ti spichnul...
Až budu doma. Tady ho ani nemám. Ale je k vidění na
anopress
Nad článkom máš ten odkaz naštýlovaný ako odkaz, takže si ho môžeš naštýlovať farebne - to nestačí?
Ináč na toto je najvhodnejšie použiť XSLT transformáciu, pomocou ktorej môžeš úplne odstrániť všetky články bez odkazu, takže ich ani neuvidíš - viď príloha.
Namiesto tohoto:
Použiješ toto:
Přišel jsem na to, že by stačilo vložit za URL| <span style='color: blue'>. Jenže neumím udělat regulární výraz, aby se mi vložilo ukončení </span> za adresu. Když to udělám ručně, mám to zobrazené jak potřebuji (nic jiného nechci). Přidal bych si to v PSPadu jako uživatelský konvertor. Nahradit
URL| za URL| <span style='color: blue'> a bylo by.
Aha, pokud tedy není zakázané ten dokument měnit ( nebo jej číst a z něj vytvoří jiný), pak je to primitivní.
A regulerní výraz je jednoduchý (ruby)
"URL | http.cz".sub /(?<=^URL \| )(.+)/, '@\1@'
Stačí jedna back assertion ?<= a jedna backreference \1. Php umí v tomhle víc, umí je i pojmenované , více zde
http://php.net/manual/en/regexp.reference.back-ref erences.php
http://www.php.net/manual/en/regexp.reference.subp atterns.php
A nezapomenout na escapování! (odkaz bude hodnota html atributu href=)
A jedna rada: je zhovadilost psát <span style color", jelikož se jedná o přímý vizuální stylování. Logičtější je dát třeba <footer><a href=></footer> a nastylovat to externě
Mám to jen na lokale a je to soubor čistě pro mou potřebu. Jasně, že bych to nahradil pouze <span> a ten nastyloval v externím, kde jsou další styly. Potřebuji URL| nahradit za <span>, pak aby se našly ty konce adres a vložilo se </span> To věe v PSPadu.
Nahraď si v tej XSLT transformácii tú časť na odstraňovanie článkov bez odkazu:
Za zvýrazňovanie odkazu:
Nějak se mi nedaří. Ani z
exslt-function.html
nejsem moudrý. Mám tam
a
Ty si pridal xml-stylesheet do XSLT transormácie? Tak to nefunguje. Máš spraviť toto:
1. Stiahneš si tú XSLT transformáciu.
2. Vyhodíš z nej šablónu pre "Document[not(Hlavicka_Clanku/Odkaz)]".
3. Vložíš do nej šablónu pre "Text_Clanku".
4. V xml-stylesheet, ktorý je v tom dátovom XML, budeš namiesto CSS odkazovať na XSLT.
Co něco takového do konvertoru?
najdi "URL|"
nahraď za <span style="color blue>#(http://|ftp://|(www\.))([\w\-]*\.[\w\-\.]*( [/?][^\s]*)?)#e</span>
Já vím, ten výraz je blbě. Jen jsem zkopíroval to, co jsi mi jednou vymyslel na převody na odkazy.
Jenže to by se mi vlastně napsaly ty znaky.
- Pres id="#", class"#", nastavit v CSS, ale jak jde o odkaz, ktery bude i tak modry, uz od začatku bych ho dal treba do<me>, <span> a v CSS určit zbytek, jak de o odkaz, tak barvy po kliku, najetí, doplnit s hover.
Když mi prozradíš, jak tam mám z URL| ruznéadresy udělat <span>ta adresa</span>, tak mi to bude stačit.
<a style = "color: #800000" href = "rúzné adresy/"> Text </ a>
Nebo
<SPAN style="color xxxxxx:url(scare.jpg)">
text</SPAN>
Nebo to nechat jen v <a> nemas-li ji víc (jinak pres class"">
CSS
a{color:red} /*počáteční barva*/
a:hover{color:blue} /*barva po prejetí misí*/
a:active{color:green}/*barva kdyz kliknes*/
visited{color:black}/barva po zhlédnutí*/
Ale i tak, bych odkazu pridal spíse kupríkladu:
<a class="ahoj" urlxxxxxxx></>
A v CSS
.ahoj
{
Color: xxx;
xxxx;
xxxx;
}
Není to odkaz a nebude to odkaz. Je to pouze textový řetězec a chci si to jen obarvit, abych to lépe viděl.
Obarvit to umím. když URL| nahradím <span style="color blue">taadresa. Ale neumím vložit za adresu ukončení spanu jinak, než ručně a to dělat nebudu.
Tady to je, pokud mas teda Javu na PC. Spustis z cmd:
Vygeneruje se output.xml, kde bude to, co chces.
Dík, vyzkouším a písnu tu.
Jo a to escapování vyřešíš pomocí http://www.php.net/manual/en/function.preg-replace -callback.php]
preg_replace_callback — Perform a regular expression search and replace using a callback[/url]
V tom hledám složitosti, jak obarvit adresu. Jde jen o to, jak to čtu odspodu, abych viděl, že má článek URL, takže jsem si přidal do uživatelského konvertoru, aby se URL nahradilo za <url>URL</url>, to si pak nastyloval, aby to bylo dobře vidět.
origoš
http://krata.bubakov.net/www/helpnet/anopress/orig .xml
nastylované
http://krata.bubakov.net/www/helpnet/anopress/orig -css.xml
Používám konvertor, makro a ctrl+s. Ještě to musím zredukovat na pouhé jedno zmáčknutí. Čili pustit makro, makro vloží konvertor, link na CSS a uloží soubor. Jenže nemohu přijít příkazy, jak vložit do makra vložení konvertoru a uložení souboru.
Děkuji všem za rady a značím za vyřešené.