IT NEWS PC REVUE PC FORUM FreeBSDInternet time: @057
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Čerstvý a voňavý domov?

Testovali sme Ambi Pur. Pozrite sa na prekvapivé výsledky experimentu! youtube.com/AmbiPur_SK

Fotosúťaž Milujem svoju prácu

Zachyťte nevšedné chvíle zo života vašej kancelárie a hrajte o hodnotné ceny www.westendtower.sk

Predajná galéria Sculpio

Galéria cenovo dostupných originálov. Originál je len jeden! www.sculpio.com

Ako schudnúť 10 kg

Ktorý je najlepší spôsob chudnutia? Prečítajte si tipy na boj s nadváhou www.news2channel.net

Schudla som 15kg za 4 týždne

Zisti tajomstvo perfektnej postavy! Prečítaj si môj príbeh a zisti ako. www.janinblog.com

Problém s prevodom HTML na entity

Zaslať odpoveď
AutorSpráva
Han5vk
Užívateľ
Užívateľ

Založený: 17.11.2011
Príspevky: 21

PríspevokZaslal: Št 17.11.11 22:18Odpovedať s citátomNávrat hore

Zdravím, mám problém s týmto kódom
kód:
function nahrada($m) {
  return $m[1] . htmlspecialchars($m[2], ENT_QUOTES, 'UTF-8', false) . $m[3]; 
}
preg_replace_callback('~(<pre>)(.*)(</pre>)~isU', 'nahrada', $text);

Tento kód má za úlohu prehodiť všetky HTML znaky na entity, no keď do premennej $text načítam súbor, v ktorom je napríklad toto
kód:
preg_match_all("/<h2>(.*)<\/h2>/Us",$text,$nadpis, PREG_SET_ORDER);
echo "<h2>";
echo $nadpis[0][1];
echo "</h2>";
(Výpis h2jek zo súboru na výpis článkov)
Tak spracuje všetko po značku <h2>. Túto značku vyhodnotí, a potom už nič. Nevypíše obsah echa, ale vypíše mi celý kód ako ";echo $nadpis [0][1];echo... Viete mi poradiť aký je tu problém?
Zobraziť informácie o autoroviOdoslať súkromnú správu
Ďuri
Administrátor
Administrátor

Založený: 11.08.2007
Príspevky: 3785
Bydlisko: Brno

PríspevokZaslal: Št 17.11.11 23:01Odpovedať s citátomNávrat hore

Ten tvoj horny kod nerobi to, co si mozno predstavujes - on na entity prevedie iba tie znaky, ktore su medzi <pre> a </pre>. Takze by bolo asi vhodne ujasnit si, co presne pozadujes, a ten kod, ktory chces v HTML interpretovat presne tak, ako je, dat bud do <pre> a podhodit tej funkcii, alebo upravit funkciu.
A dalsia vec, ty ocakavas, ze ten spodny kod sa ti bude vykonavat? Lebo tak nejak som to pochopil z tvojho "Nevypíše obsah echa".
Zobraziť informácie o autoroviOdoslať súkromnú správuJabberSkype
Han5vk
Užívateľ
Užívateľ

Založený: 17.11.2011
Príspevky: 21

PríspevokZaslal: Pi 18.11.11 15:20Odpovedať s citátomNávrat hore

Viem, že sa to má prehadzovať len medzi značkami <pre>, a ten spodný kód má vybrať zo súboru $text obsah medzi tagmi <h2> a potom ho echom vypísať, a to aj robí, ak ho otvorím samostatne, no keď ho otvorím v tom hornom a následne celý vypíšem tak mi to najskôr ten horný kód odserie... Zjednodušene, keď otvorím celý súbor (z ktorého mám časť v druhom kóde) samostatne, tak robí čo má. No keď ho otvorím v nadradenom súbore (z ktorého je prvý kód), načítam ho do premennej, prebehnem cez ten prvý kód a vyechujem to čo mi výjde z preg_replace_callback tak to po spomínanej značke <h2> odchádza.

// pridané po 16 hodinách 7 minútach od posledného príspevku

Tak čo je s tým?
Zobraziť informácie o autoroviOdoslať súkromnú správu
Ďuri
Administrátor
Administrátor

Založený: 11.08.2007
Príspevky: 3785
Bydlisko: Brno

PríspevokZaslal: Pi 18.11.11 15:39Odpovedať s citátomNávrat hore

Nenahanaj nas, nikto tu nie je povinny odpovedat ti.
Mohol by si zaslat co najjednoduchsi, ale kompletny kod, ktory by sme len spustili a videli by sme, aky je vystup a aky konkretny vystup by si si miesto toho predstavoval? Nemozeme vediet, ci chybu nerobis niekde inde, a cim podrobnejsie sa svoju situaciu snazis popisat, tym viacej som domotany.
Zobraziť informácie o autoroviOdoslať súkromnú správuJabberSkype
Han5vk
Užívateľ
Užívateľ

Založený: 17.11.2011
Príspevky: 21

PríspevokZaslal: So 19.11.11 12:43Odpovedať s citátomNávrat hore

Prepáč, v hlavnom súbore (weby.php) mám to menenie HTML entít-
kód:
if (!isset($_GET['clanok'])) {
$strankaa= "index"; }
else {$strankaa= $_GET['clanok'];}
$soubor= "weby/".$strankaa.".php" or ".html" ;
if (!file_exists($soubor)) {
$soubor= "nenaslo.php"; };

$vstup= file_get_contents($soubor);

function nahrada($m) {
  return $m[1] . htmlspecialchars($m[2], ENT_QUOTES, 'UTF-8', false) . $m[3]; 
}
$vypis = preg_replace_callback('~(<pre>)(.*)(</pre>)~isU', 'nahrada', $vstup);

echo $vypis;


Potom mám vo vypísanom súbore (premenná $subor- vstup $vypis- vystup toho HTML konvertovania) takýto kód:
kód:

if (!isset($_GET['clanok'])) {
$stranka= "index"; }
else {$stranka= $_GET['clanok'];}
$subor= "weby/".$stranka.".php" or ".html" ;
if (!file_exists($subor)) {
$subor= "nenaslo.php"; };


$soubor="1"; // Základná hodnota

// OVEROVANIA

while (file_exists("weby/".$soubor.".php")) {  // $subor zväčšujem kým existuje
$vyber = $soubor; // načítam ho aj do $vyber
$soubor++;} // $subor zväčšujem kým existuje

while (file_exists("weby/".$vyber.".php")) {  // kým existuje $vyber

// VYBER SLOV

$text= file_get_contents("weby/".$vyber. ".php");  // otvorím momentálny súbor

preg_match_all("/<h2>(.*)<\/h2>/Us",$text,$nadpis, PREG_SET_ORDER);
echo "<h2>";
echo $nadpis[0][1];
echo "</h2>";

preg_match_all("/<small>(.*)<\/small>/Us",$text,$male, PREG_SET_ORDER);
echo "<small>";
echo $male[0][1];
echo "</small>";

preg_match_all("/<p>(.*)<\/p>/Us",$text,$obsah, PREG_SET_ORDER);
echo "<p>";

$slov = 40; // počet slov ve zkráceném článku...
$text_out = explode(" ", $obsah[0][1]); // spočítání slov podle mezer
   
for($y=0; $y < $slov; $y++) {  // cyklus pro zobrazení zadaného počtu slov   



// VYPIS
if (isset($text_out[$y])) {
echo $text_out[$y]." "; } ; // Výpis zkráceného článku
}
echo "...</p>";

echo "<a href='?str=weby&clanok=" .$vyber. "' class='citaj'>";
echo "(Čítaj viac)";
echo "</a>";
echo "<br><br>";

// ETC.
$vyber--; // Zmenšujem číslo súboru a beží to znova
}

Prepáčte, za tú fúru kódu, ale vážne netuším, čo môže z toho byť najdôležitejšie :/ K tomu čo to robí a to čo to má robiť. Hlavný súbor (weby.php) má zmeniť všetky HTML znaky na entity (medzi značkami <pre>) a do tohto súboru vkladám súbor index.php, ktorý mi vypisuje články (prvých 40 slov). Tento súbor index.php funguje samostatne, ale ak ho vložím do hlavného súboru weby.php a tam mám tú funkciu na zmenu HTML značiek tak mi to vysype von iba kód, tzn. nespracuje ho, len ho prosto vypíše celý na výstup. Toto mi vypisuje až po značke <h2> v prvom preg_replace_callback(). Prakticky mi to spracuje HTML značky, ale zvyšok kódu nie, takže sa mi žiadne kúsky článkov nezobrazia, akurát tak kódy ktoré ich majú vytiahnúť. Snáď ste pochopili aspoň niečo.

// pridané po 1 hodine 36 minútach od posledného príspevku

Vie niekto prečo to hapruje?
Zobraziť informácie o autoroviOdoslať súkromnú správu
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF

SEO - optimalizácia pre vyhľadávače

Freebsd