Portál AbcLinuxu, 25. dubna 2024 15:33


Dotaz: Odstránenie HTML tagov z textu pomocou PHP

5.2.2007 13:24 Peter
Odstránenie HTML tagov z textu pomocou PHP
Přečteno: 551×
Odpovědět | Admin
Dobrý deň Vám prajem.

Mám za úlohu napísať exportný program z eshopu do CSV (prakticky som pred dokončením) len sa trápim s poslednou vecou a síce popis produktu. Popis produktu je formátovaný pomocou HTML tagov (rôzne div-y, strong-y, ...) a ja potrebujem všetky tieto HTML tagy odstrániť aby mi zostal len čistý text a samozrejme to potrebujem zrobiť výlučne pomocou PHP (čiže žiadne sed, ...). Na www.php.cz som už hľadal, len som z toho nejaký nemúdry - vlastne by mi stačilo ma len naviesť na nejakú funkciu.

Vopred ďakujem za všetky odpovede.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.2.2007 13:28 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
strip-tags
5.2.2007 13:37 Peter
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
OK - super - toto je ono, len mi tam ešte nejako zostali rôzne nbsp; (ako tu vlastne mám zapísať znak & :-)), \r, \t, ... a s tým čo?

Ale aj tak - VRELÁ VĎAKA.
5.2.2007 13:44 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
5.2.2007 15:25 Peter
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
OK - aj toto je super - ale ešte stále mi tam zostali nejaké "artefakty". Výsledný (terajší) export vyzerá takto. Prvý riadok je dobre, "druhý" je na figu a tretí je opäť dobre. Tento CSV je v UTF-8 a záznamy v riadkoch sú oddelené pomocou tabulátora.

Ešte raz - vrelá vďaka - a kto mi pomôže tak ten keď bude v košiciach tak má u mňa pivo :-)
5.2.2007 19:27 Peter
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
Sorry, že otravujem - ale fakt to niekto nevie? (ja viem, že štandartne kto vie odpovie, ale aj tak)
5.2.2007 19:39 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
Z toho csv vôbec netuším ako to má vyzerať (a čo je tam zlé). Najlepšie by bolo dať nejaký naformátovaný (obsahujúci tie tagy a entity) dokument, ktorý treba zmeniť na plain text.

PS: Jediné čo som si v tom csv všimol je, že sa s pôvodného html odstránila entita   a nedala sa za ňu náhrada (teda medzera).
5.2.2007 20:00 Peter
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
No - problém je v tom, že

Riadok csv-čka má vyzerať takto:
NazovProduktu tabulator PopisProduktu tabulator ZarucnaLehota tabulator PredajnaCena
NazovProduktu tabulator PopisProduktu tabulator ZarucnaLehota tabulator PredajnaCena
NazovProduktu tabulator PopisProduktu tabulator ZarucnaLehota tabulator PredajnaCena
.
.
.

Ibaže - PopisProduktu je v eshope formátovaný klasicky pomocou HTML (ja viem, že je to totálne nevalídne, ale to už nerobím ja :-)) a ja len vlastne z tohto HTML súboru potrebujem vytiahnúť čistý text - žiadne nové riadky, žiadne HTML tagy, ... len proste čistý súvislý (v jednom riadku) popis produktu

Veľmi pekne ďakujem.
5.2.2007 21:09 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
<?php

	$str = file_get_contents('http://student.ics.upjs.sk/~supervisor/PopisProduktu.txt');
	$str = trim(preg_replace('/[\s\xa0]+/', ' ', html_entity_decode(strip_tags($str))));

	$str = iconv('windows-1250', 'utf-8', $str);

	echo "$str\n";

?>
5.2.2007 21:32 Peter
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
Supeeeeeeer - toto je ono čo som hľadal.

A že som taký smelý - čo vlastne toto (trim(preg_replace('/[\s\xa0]+/', ' ', html_entity_decode(strip_tags($str))));) robí? html_entity encode a strip_tags viem čo je, ale nejak sa neviem vysomáriť z trim, preg_replace a hlavne z /[\s\xa0]+/.

Veľmi pekne ďakujem za pomoc.
5.2.2007 22:16 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP

trim, popis syntaxe regularnich vyrazu u preg_replace.

preg_replace('/[\s\xa0]+/', ' ', $str) nahradi sekvence netisknutelnych znaku za jednu mezeru. Tvrda mezera (hexa A0 - asi prekonvertovane &nbsp;) se tam musi dodat zvlast, \s ji nezahrnuje (??).

6.2.2007 06:37 Peter
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
Hmmmmm - veľmi pekne ďakujem - zasa som o niečo múdrejší ;-)
5.2.2007 19:54 R
Rozbalit Rozbalit vše Re: Odstránenie HTML tagov z textu pomocou PHP
No sice neviem, co s tym chces robit, ale na taketo veci sa pouziva strip_tags v kombinacii s trim, str_replace a strtr.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.