[ Vas @ 29.03.2005. 10:47 ] @
Trebam da pretrazim stranicu i odbacim sav tekst koji je u boji pozadine (nevidljiv). Pregledao sam neke postove i mislim da se to moze uraditi sa preg_match_all, ali ne znam kako.
Molim pomoc.
[ Vas @ 30.03.2005. 13:18 ] @
Evo sta sam uspeo do sada da uradim:

Code:

$text="http://localhost/test/test1.htm";
$keywords = @implode('', file($text));
$bojaPozadine="\"#C0C0C0\"";
$pattern="/(<font color=".$boja.">)(.*)(<\/font>)/";
$string="<b>OVDE JE SKRIVENI TEKST</b>";
$rezultat=preg_replace($pattern, $string , $keywords);
echo $rezultat;


Ovo radi onako kako i treba da radi (ispisuje poruku umesto teksta u odredjenoj boji), ali imam problem jer promenljivu $bojaPozadine (bgcolor) moram da nadjem programski, a ne da je upisujem u kod.
[ Jbyn4e @ 30.03.2005. 13:43 ] @
Pa koristi slicnu funkciju, recimo preg_match:
http://www.php.net/manual/en/function.preg-match.php
samo moras naci nacin na koji ces da saznas sta je boja pozadine - da li je upisana u body tag, ili je samo pozadina celije ili cele tabele,ili se nalazi u css-u negde....tako da to ce ti biti koliko ja vidim sizifov posao...
[ noviKorisnik @ 30.03.2005. 14:48 ] @
Evo, snimi ovo kao test1.htm
Code:

<html>
<head>
<title>t</title>
<style>
.red
{
    color: red;
}
.f00
{
    color: #f00;
}
.ff0000
{
    color: #ff0000;
}
</style>
<head>
<body bgcolor="#FF0000" text="#0000FF">
<span class="red">crveno</span><br />
<span class="f00">opet crveno</span><br />
<span class="ff0000">i - crveno...</span><br />
<b>hello world</b>
</body>
</html>
[ Vas @ 30.03.2005. 19:02 ] @
Razmisljao sam o problemu sa pozadinom celija ili tabela, ali mi css nije pao na glavu (pamet). Posle Dejanovog posta sve sam blizi odustajanju od ovog problema.
Ako se neko nesto seti - seti se, ako ne nikom nista...

Hvala
[ Goran Rakić @ 30.03.2005. 20:30 ] @
Problem jeste komplikovan, ali opet moguce ga je resiti u velikom broju slucajeva. Dakle, prvo trebas napisati kod koji svaku boju pretvoriti u njenu HEX vrednost. Dakle, boja se moze zadati imenom (tipa 'red'), RGB oznakom (0,0,0) ili heksadecimalnim kodom (#ffffff) koji moze biti u skracenom (#fff) ili punom obliku.

E sada, trebas pohvatati boju pozadine dela stranice gde se taj tekst nalazi kao i boju samog teksta. Boja teksta moze biti zadana font tag-om, color atributom BODY tag-a ili preko CSS-a. Boja pozadine elementa moze biti zadata bgcolor atributom BODY-a, ili background tag-om elementa ili preko CSS-a.

Dodatno, boje mogu biti promenjene preko JavaScript DOM-a sto nije tesko detektovati jer se pristupa ".style" parametru.

Dakle, ti bi trebao napisati HTML parser koji bi ucitavao sve CSS-ove (@import ili preko link-a), a onda u DOM stilu izparsirao HTML i na kraju ga obisao redom uporedjujuci aktuelnu boju pozadine i boju teksta. Nije nemoguce, ali treba dosta vremena. Kao ohrabrenje - recimo da je interesantno i da ces imati ozbiljno parce koda kada ovo zavrsis.

Pogledaj ove linkove:
http://www.sitepoint.com/article/coming-soon-webserver-near/15
http://www.carrubbers.org/scripts/php/xpath/
i eventualno http://tidy.sourceforge.net
[ dinke @ 31.03.2005. 09:05 ] @
Svojevremeno sam radio na problemu koji pominjes prilikom testiranja za Internet Krstaricu, ne bi me iznenadilo da je isti test u pitanju. Obzirom da je kompletnu proveru zbog svih mogucih css tagova jako tesko izvrsiti do kraja, ja sam se ogranicio na html sto i tebi preporucujem ako je to neki test zadatak (sto mislim da jeste). Ako ti znaci mogu da iskopam kompletan kod iz nekog starog backup-a pa da postujem ovde.
[ Vas @ 01.04.2005. 11:09 ] @
Tako je, u pitanju je Krstarica. I bas sam uradio kako si i predlozio. Uradio sam taj test bez provere boje font/pozadina tako da ne moras da se mucis i trazis kod.
U svakom slucaju, hvala.

PS. Skrecem sa teme, ali me interesuje sta su ti odgovorili posle svih testova.
[ sojic @ 06.04.2005. 12:53 ] @
A zasto ti treba tekst da bude istom bojom sa pozadine? Pogledaj malo forum Pretrazivaci, videces da to ti je losi poteg (ako nisam loso pretpostavio)
[ leka @ 11.05.2005. 14:04 ] @
Iako zvuci lako, ovo je velika koska...
Da bi se ovo odradilo kako treba covek mora da ima vise stvari u dzepu:
- Odlican CSS parser.
- Odlican HTML parser.
- JavaScript interpreter.

Ovo sve treba da bude u samoj PHP aplikaciji. Kao sto Goran rece za gomilu slucajeva je dovoljno imati samo odlican HTML parser, ali sta ako covek menja pozadinu javaskriptom? Sta ako koristi CSS Level 2? Za ovakve slucajeve PHP aplikacija treba da parsira CSS fajl(ove) i pronadje informacije o boji strane koja se trenutno obradjuje. Ostaje zadnji problem - sta ako covek menja boju strane dinamicki, JavaSkriptom? Za prosto resenje ovog slucaja coveku treba JavaScript interpreter koji ce da interpretira sve skriptove koji se "uvlace" u stranu.

Poprilicno komplikovano... rekao bih da kompletnog resenja NEMA.
[ _owl_ @ 11.05.2005. 14:38 ] @
A jos sve to treba odraditi za Dz. Pretpostavljam da ce se vremenom (ako vec ne postoje) naci par HTML (i CSS parsera) uradjenih u PHP-u.
[ sojic @ 11.05.2005. 18:21 ] @
Ako hoces da trazis nevidljiv tekst, onda obrati paznju na sledece:

Code:

................
.nevidljiv {
   display:none;
}

..................

<span class="nevidljiv">ovo je takodje nevidljiv tekst.
Cak sto vise vise nevidljiviji nego ako koristis font-color.</span>