Autor | Zpráva | ||
---|---|---|---|
nodo Profil |
#1 · Zasláno: 14. 2. 2018, 21:26:25
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 |
#3 · Zasláno: 15. 2. 2018, 19:10:22
Keeehi:
Ďakujem pekne, pozrem si to. |
||
nodo Profil |
#4 · Zasláno: 15. 2. 2018, 20:25:12
Keeehi:
Skúšal som, ale medzi PRE mám ARRAY phpfiddle.org/lite/code/asvn-63dx |
||
Keeehi Profil |
#5 · Zasláno: 15. 2. 2018, 21:06:40
Vypadl mi tam index pole. Už jsem ho tam doplnil.
|
||
nodo Profil |
#6 · Zasláno: 16. 2. 2018, 17:46:37
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 |
#7 · Zasláno: 16. 2. 2018, 19:10:55
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 |
#8 · Zasláno: 16. 2. 2018, 20:23:41
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"); |
||
Časová prodleva: 6 let
|
0