Autor Zpráva
nodo
Profil
Dobrý večer prajem.
Mám problém spojiť 2 funkcie do jedného.
ini_set("highlight.comment", " #939399");
ini_set("highlight.default", "#44c");
ini_set("highlight.html", "#00FF00");
ini_set("highlight.keyword", "#373; font-weight: bold");
ini_set("highlight.string", "#c30");
ini_set("highlight.bg", "#FFFFFF");


function showCode($code) {
$code = highlight_string($code, true);
$code = explode("<br />", $code);

$i = "1";
foreach ($code as $line => $syntax) {
                            echo "<span class='shline'>".$i.".</span><span class='shcode'> ".$syntax."</span><br>";
  $i++;
                                                           }  
                                              }

A to druhé:

function preve($clanoka) { 

$find = array(
'~\[pre\](.*?)\[/pre\]~s',

);

$replace = array(
'<pre><code id="codes">$1</code></pre>',
                          );

return preg_replace($find,$replace,$clanoka);
                                                   }

Skúšal som to aj takto, ale nefunguje je to 100%. Obsah článku by sa mal vypísať a medzi PRE len určitý kód. ALe hodí mi to tam všetko. Vedeli by ste pomôcť?
function prevecode($temp) { 
// BBcode array
$find = array(
'~\[pre\](.*?)\[/pre\]~s',
);

$replace = array(
"$1",

);
$code = preg_replace($find,$replace,$temp);

$codew = highlight_string($code, true);
$codem = explode("<br />", $codew);

$i = "1"; echo "<pre><code id='codes'>";
foreach ($codem as $syntax) {
  echo "<span class='shline'>".$i.".</span><span class='shcode'>".$syntax."</span><br>";
  $i++;
}  
echo "</code></pre>";

}
Keeehi
Profil
function prevecode($comment) { 
    return preg_replace_callback('~\[pre\](.*?)\[/pre\]~s', function ($matches) {
        $result = "<pre><code id='codes'>\n";
        foreach (explode("<br />", highlight_string($matches[1] true)) as $key => $line) {
            $result .= "<span class='shline'>" . ($key + 1) . ".</span><span class='shcode'>$line</span><br>\n";
        }  
        return $result . "</code></pre>";
    }, $comment); 
}

V zásadě jde o to jen místo preg_replace použít preg_replace_callback. Celý zbytek je už bylo jen učesání do kompaktnější formy.
Jo a taky moje prevecode se chová trochu jinak než to tvé. Tím je myšleno, že výsledek přímo nevypisuje, ale jen ho vrací. Což dává větší smysl (můžou se na něj pustit další transformační funkce) a je to v souladu s funkcí preve.
nodo
Profil
Keeehi:
Ďakujem pekne, pozrem si to.
nodo
Profil
Keeehi:
Skúšal som, ale medzi PRE mám ARRAY phpfiddle.org/lite/code/asvn-63dx
Keeehi
Profil
Vypadl mi tam index pole. Už jsem ho tam doplnil.
nodo
Profil
Keeehi:
Chcel som to včera upraviť, ale nedarilo sa mi. Takéto komplikované mi ešte neidú.
Nefungovalo, chýbala tam ešte čiarka, po doplnení to fičí. ĎAKUJEM PEKNE
function prevecode($comment) { 
    return preg_replace_callback('~\[pre\](.*?)\[/pre\]~s', function ($matches) {
        $result = "<pre><code id='codes'>\n";
        foreach (explode("<br />", highlight_string($matches[1], true)) as $key => $line) {
            $result .= "<span class='shline'>" . ($key + 1) . ".</span><span class='shcode'>$line</span><br>\n";
        }  
        return $result . "</code></pre>";
    }, $comment); 
}
Keeehi
Profil
nodo:
Jasné. Při doplňování jsem omylem vymazal i čárku. Celé je to kvůli tomu, že pokud se jedná o nějakou jednodušší úpravu, tak ten kód znovu nezprovozňuji a tudíž i netestuji. Je pak možné, že se tam omylem dostane i nějaká drobná syntaktická chyba. Opravil jsi to ale správně a to je to podstatné.
nodo
Profil
Keeehi:
Kód OK. farebne zadanie nefunguje.
1. riadok je zelený a zvyšok čierny. Veď prídem na to...
ini_set("highlight.comment", " #939399");
ini_set("highlight.default", "#44c");
ini_set("highlight.html", "#00FF00");
ini_set("highlight.keyword", "#373; font-weight: bold");
ini_set("highlight.string", "#c30");
ini_set("highlight.bg", "#FFFFFF");

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: