Kód je ignorován - Nefunguje print_r($array) – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kód je ignorován - Nefunguje print_r($array) – PHP – Fórum – Programujte.comKód je ignorován - Nefunguje print_r($array) – PHP – Fórum – Programujte.com

 

fix0
Stálý člen
25. 9. 2019   #1
-
0
-

Ahoj všem, používám ob_start a on mi vždycky rozbije web stylem, že funkce callback ignoruje PHP k´d např. zde má být vypsán obsah pole a neděje se tak.

Děkuji za identifikaci chyby.

<?php
function callback($buffer)
{
  $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
  return (print_r ($a)); // je nějak ignorováno 
}
echo "test1";
ob_start("callback"); //proč se obsah webu (kromě "test1") nenahradí obsahem pole $a?
echo "test2";
?>
<html>
<body>
<p>It's like comparing <?php echo "test3"; ?> apples to oranges.</p>
</body>
</html>
<?php
/*
ob_end_flush(); // je globálně pro všechny stránky
*/
?>

Současný výstup: test1

Očekávaný výstup: test1 ["a"]=> string(5) "apple" ["b"]=> string(6) "banana" ["c"]=> string(6) "cherry"
 

Nahlásit jako SPAM
IP: 31.30.173.–
Kit+15
Guru
25. 9. 2019   #2
-
0
-
Nahlásit jako SPAM
IP: 46.135.93.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
fix0
Stálý člen
25. 9. 2019   #3
-
0
-

#2 Kit
Přesně takto ho chci přece použít, akorát k tomu potřebuji i to pole. Viz příspěvek zabývající se přídáním custom HTML za body tag.

<?php
function callback($buffer)
{
        $htmlDocument = $buffer;
        $pattern = '[<]body[^>]*[>]';
        $matches = array();
        preg_match($pattern, $htmlDocument ,$matches)
        $puvodniBody = array_shift(array_values($matches));
        $replacement = "$puvodniBody . MOJE HTML";
        print(preg_replace($pattern, $replacement, $htmlDocument ));
        //v prohlížeči by se mělo vypsat něco jako <html bla bla bla<body bla>
MOJE HTML bla bla bla</html>
}

ob_start("callback");
//do zápatí webu ještě strkám ukončení ob_end_flush();
?>

Potřebuji využít pole, protože preg_match ukládá nalezenou shodu do pole a já tu shodu tam pak musím s přilepeným custom HTML zase vrátit, protože nechci body nahradit, ale chci k němu neco přidat.

Nahlásit jako SPAM
IP: 31.30.173.–
Kit+15
Guru
25. 9. 2019   #4
-
0
-

#3 fix
V tom návodu je napsáno, že máš použít return. Ty tam máš print.

Nahlásit jako SPAM
IP: 46.135.93.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
MilanL+1
Grafoman
26. 9. 2019   #5
-
0
-

#3 fix
je třeba nasměrovat ten obsah do bufferu, navíc v obou případech je použito replace tzn. náhrada něčeho v bufferu něčím jiným.

Podstatné je že jakákoliv změna musí být provedena na bufferu.

Nahlásit jako SPAM
IP: 91.139.9.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Nefunguje mi kod — založil Theur

Proc nefunguje tento kod — založil kucape2

Array of array of array — založil Yuffie

COM Array — založil Pawl

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý