Toon posts:

[PHP] Highlight zonder Smilies

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi.,

Het is hier zo vaak gevraagd maar niemand heeft er ooit antwoord opgegeven.
Weet iemand dit uberhaupt??
PHP:
1
<?function showsource ($code) {    ob_start();    highlight_string($code);    $colorsource = ob_get_contents();    ob_end_clean();        $colorsource = str_replace ("&amp;nbsp;", " ",$colorsource);    return $colorsource;}$plain_code = "<? php_info(); ?>";echo showsource($plain_code);?>

Ik heb die code.. Deze wil ik gebruiken voor me forum .. Maar het moet dus zijn dat als er een : ) in $plain_code zit dat ie die dan niet omzet naar een smilie! Ik heb die omzet code er niet bijgezet omdat het toch niet werkt. hij zet alles om.


Hoe moet dit nu dan??

Ik heb de search heel vaak gebruikt..

Dank..

  • Grum
  • Registratie: Juni 2001
  • Niet online
die code die je nu neerzet zet nix om naar een smiley hoor :)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

zorgen dat je niets vervangt tussen de code die gehighlight wordt.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Je kunt er dus voor zorgen om het buiten om te doen, zoals de reply hierboven.

Maar je kunt het natuurlijk ook gewoon ff rechtzetten met str_replace, dus zet je de <img> code weer om naar bijv. een :-)

Niet netjes, maar wel effectief :)

Verwijderd

Topicstarter
Op zondag 10 maart 2002 16:05 schreef Markuz het volgende:
Je kunt er dus voor zorgen om het buiten om te doen, zoals de reply hierboven.

Maar je kunt het natuurlijk ook gewoon ff rechtzetten met str_replace, dus zet je de <img> code weer om naar bijv. een :-)

Niet netjes, maar wel effectief :)
Maar dat gaat toch veel trager?? enne btw ik heb die replace code er niet bijgezet, lees de topic, stond er bij ..

Verwijderd

Topicstarter
Op zondag 10 maart 2002 16:05 schreef Markuz het volgende:
Je kunt er dus voor zorgen om het buiten om te doen, zoals de reply hierboven.

Maar je kunt het natuurlijk ook gewoon ff rechtzetten met str_replace, dus zet je de <img> code weer om naar bijv. een :-)

Niet netjes, maar wel effectief :)
tuulk kan dat niet, stel dat er een php code is met <img src= bla bla bla > dan zet ie dat weer terug in een smile, werkt dus niet..

Verwijderd

Op zondag 10 maart 2002 17:22 schreef Stoel het volgende:

[..]

tuulk kan dat niet, stel dat er een php code is met <img src= bla bla bla > dan zet ie dat weer terug in een smile, werkt dus niet..
Tuurlijk kan dat wel.

Je hebt dus een variabele die bewerkt is met o.a. highlight_string(), en dan nog de replaces van de smileys (die :-) omzet naar <img>).

Als je er nou voor zorgt dat je de replaces (die <img> weer omzet naar :-)) alleen op de code uitvoert (de PHP code dus mét colorcoding) worden de <img> tags weer om getoverd in de oorspronkelijke user output.

En zo traag gaat dat niet, str_replace is sneller dan eregi e.d. en vertraagt miniem.

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 08:16
Ik snap het volgens mij niet (helemaal). Als je code_highlight worden smilies vervangen, zoniet dan herschrijf je de functie toch gewoon zodat de smilies niet eens omgezet worden.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Volgens mij werkt het op topix hier met een soort hash van de code die eerst gereplaced wordt, en dat daarna het parsen van de smileys etc. gebeurt, en de gehighlighte code weer teruggezet wordt op de plaats van de hash... not sure, maar ik vind het idee in ieder geval niet zo gek.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function saveCode ( &$arr, $code, $highlight )
{
   
   $hash = md5 ( $code );
   if ( $highlight )
   {
    // je ob_ meuk
   }
   else
   {
    $code = "<sub>code:</sub><hr><pre>" 
        . htmlentities ($code)
        . "</pre><hr>";
   }
   $arr [ $hash ] = $code;
   return "[code:$hash]";
}
$code = array ();

$message = preg_replace ( 
           "/phpregexje/e", 
           'saveCode ( $code, "$1", true )', 
           $message 
         );
$message = preg_replace ( 
           "/plaincode regexje/e", 
           'saveCode ( $code, "$1", false )', 
           $message 
         );
// ubb meuk
foreach ( $code as $hash => $code )
   $message = str_replace ( "[code:$hash]", $code, $message );

iets dergelijks zou wel moeten werken.

edit: typo's

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Op maandag 11 maart 2002 09:34 schreef drm het volgende:
Volgens mij werkt het op topix hier met een soort hash van de code die eerst gereplaced wordt, en dat daarna het parsen van de smileys etc. gebeurt, en de gehighlighte code weer teruggezet wordt op de plaats van de hash... not sure, maar ik vind het idee in ieder geval niet zo gek.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function saveCode ( &$arr, $code, $highlight )
{
   
   $hash = md5 ( $code );
   if ( $highlight )
   {
    // je ob_ meuk
   }
   else
   {
    $code = "<sub>code:</sub><hr><pre>" 
        . htmlentities ($code)
        . "</pre><hr>";
   }
   $arr [ $hash ] = $code;
   return "[code:$hash]";
}
$code = array ();

$message = preg_replace ( 
           "/phpregexje/e", 
           'saveCode ( $code, "$1", true )', 
           $message 
         );
$message = preg_replace ( 
           "/plaincode regexje/e", 
           'saveCode ( $code, "$1", false )', 
           $message 
         );
// ubb meuk
foreach ( $code as $hash => $code )
   $message = str_replace ( "[code:$hash]", $code, $message );

iets dergelijks zou wel moeten werken.

edit: typo's
Hmzz beetje vage code .. kan je misschien een werkend voorbeeld laten zien ?

Verwijderd

PHP:
1
<?function bboff($bboff, $nr) {global $c;global $nr; $c[$nr]=$bboff; $bboff=("[code]".$nr."[/code]");$nr++;return $bboff; } function bbon($bbon) {global $c; $bbon=("<blockquote>code:<hr><code>".$c[$bbon]."</code>[/quote]");return $bbon; }  $message=preg_replace("/\\[code\]((.|\n)*?)\\[\/code\]/ise", "bboff('\\1', '$nr')", $message);// Smilies replacen enz... //$message=preg_replace("/\\[code\]((.|\n)*?)\\[\/code\]/ise", "bbon('\\1')", $message);?>

Dit is hoe ik heb het gedaan. Zal wel niet de meest logische oplossing zijn. ;)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Brabus:
Dit is hoe ik heb het gedaan. Zal wel niet de meest logische oplossing zijn. ;)
nope. Je krijgt namelijk een probleempje als iemand
code:
1
 blabla


code:
1
0

intikt. De kans is niet zo groot, maar hij is iig. stukken groter dan wanneer je een md5 hash gebruikt :)

Daarnaast begrijp ik dit niet zo goed:
code:
1
2
3
4
function bboff($bboff, $nr) { // $nr is dus een parameter...
   global $c;
   global $nr;          // of stiekem een global :?
// ....

__________________________________________________________________________________________________________
Stoel:
Hmzz beetje vage code .. kan je misschien een werkend voorbeeld laten zien ?
Ehmmm, nee ik stel voor dat je gerichte vragen stelt over de code, en dat je er mee aan de slag gaat. Of niet, maar da's natuurlijk jouw keuze :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
keej heb het werken

dit is een DEEL van de code
PHP:
1
<?            $content = stripslashes($content);            ob_start();            highlight_string($content);            $content = ob_get_contents();            ob_end_clean();?>

Ik wil deze code replace:
code:
1
2
3
:):)
[php3c8cc012618f0]
:):)

Maar nu geeft hij een error :

Als volgt:
code:
1
2
3
4
5
<?php 
echo 
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\easyphp\www\ubb\index.php3 on line 11
"error\"; 
?>

Iemand enig idee ?? het heeft met stripslashes of addslashes te maken ??

Alvast bedankt. .

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

waarom zou je hier stripslashes willen gebruiken :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
HAAHHAAH volgens mij heb ik een bug in topix ontdekt hahaha
code:
1
2
3
:):)
[php3c8cc012618f0]
:):)

Ik weet nu dus ook hoe die van got werkt haha

Want ik gaf deze code op::
PHP:
1
<?echo "error";?>

hmmzz :D maar weet iemand het antwoord?? hij geeft een fout aan bij "

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

*click* [topic=293390] ;)

Maar de vraag blijft, waarom doe je die stripslashes :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Grum
  • Registratie: Juni 2001
  • Niet online
Op maandag 11 maart 2002 16:34 schreef Stoel het volgende:
Ik weet nu dus ook hoe die van got werkt haha
HAHAHA leg dan uit HAHAHA :z

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Grum:
HAHAHA leg dan uit HAHAHA :z
*proest* :D
wat ben jij in een pestbui zeg...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
weet niet, ik dacht dat je de ingevoerde dingen eerst moet strip/add slashen of was dat htmlspecialchars??

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Tja, dan moet ik je toch echt even een enkele reis Manual sponsoren: stripslashes

imo is hij daar nergens goed voor iig.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Op maandag 11 maart 2002 17:31 schreef drm het volgende:
Tja, dan moet ik je toch echt even een enkele reis Manual sponsoren: stripslashes

imo is hij daar nergens goed voor iig.
Tjah .. hoe moet het dan .. want hij wil die codes niet goed highlighten hij geeft errors..

Verwijderd

Topicstarter
<?php
echo
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\easyphp\www\ubb\index.php3 on line 11
"hoi\";
?>

Das de code die ik laat highlighten . .

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

laat die parser eens zien?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Kee:
PHP:
1
<?if ($submit){    function SourceOrginal($content, $type)     {        global $arr;        if ($type == "php")        {            ob_start();            highlight_string($content);            $content = ob_get_contents();            ob_end_clean();        }        $hash = md5($content);        $arr[$hash] = $content;        $content = "[".$type."]".$hash."[/".$type."]";        return $content;     }         function SourceNew($hash, $type)     {        global $arr;        if ($type == "php")        {            $naam = "PHP:";        }        else        {            $naam = "Code:";        }        $content = "<blockquote>$naam<hr><code>".$arr[$hash]."</code>[/quote]";        return $content;     }    $bericht = preg_replace("/\\[code\]((.|\n)*?)\\[\/code\]/ise", "SourceOrginal('\\1', 'code')", $bericht);    $bericht = preg_replace("/\\[php\]((.|\n)*?)\\[\/php\]/ise", "SourceOrginal('\\1', 'php')", $bericht);    $bericht = str_replace(":)", "[img]\"img/smile/blij.gif\"[/img]", $bericht);    $bericht = preg_replace("/\\[code\]((.|\n)*?)\\[\/code\]/ise", "SourceNew('\\1', 'code')", $bericht);    $bericht = preg_replace("/\\[php\]((.|\n)*?)\\[\/php\]/ise", "SourceNew('\\1', 'php')", $bericht);    echo $bericht;}else{    echo "<form action='$PHP_SELF' method='post'>";    echo "<textarea name='bericht' rows='15' cols='40'></textarea>";    echo "<input type='submit' name='submit' value='Verzenden'>";}?>

Voeg nu eens dit script in die textarea in:
PHP:
1
<?:):)<?phpecho "Hoi";?>:):)?>

En kijk eens welke fout ie geeft.. juist jah .. :) ASCII fout..

Verwijderd

Topicstarter
Hmmz got is zeer brak :


Dit moet je toevoegen
code:
1
2
3
4
5
:):)
<?php
echo "Hoi";
?>
:):)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

niet juist.

Ik krijg helemaal geen ASCII fout.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Op maandag 11 maart 2002 17:59 schreef drm het volgende:
niet juist.

Ik krijg helemaal geen ASCII fout.
Hij bedoeld iig dat je dit invoert:
code:
1
2
3
4
5
:):)
[_php]<?php
echo "Hoi";
?>[_/php]
:):)

En dan [_php] en [_/php] zonder underscore... :)

Verwijderd

Op maandag 11 maart 2002 14:54 schreef drm het volgende:

[..]

nope. Je krijgt namelijk een probleempje als iemand
code:
1
 blabla


code:
1
0

intikt. De kans is niet zo groot, maar hij is iig. stukken groter dan wanneer je een md5 hash gebruikt :)

Daarnaast begrijp ik dit niet zo goed:
code:
1
2
3
4
function bboff($bboff, $nr) { // $nr is dus een parameter...
   global $c;
   global $nr;          // of stiekem een global :?
// ....
Dat is niet helemaal waar, want wanneer je [.code]0[./code] intypt dan krijg die ook zijn eigen nummer.

En die code is al een hele tijd oud dus niet lachen ajb :P

Verwijderd

Topicstarter
Op maandag 11 maart 2002 17:59 schreef drm het volgende:
niet juist.

Ik krijg helemaal geen ASCII fout.
dus nog keer testen dan maar :):) iemand enig idee??

Verwijderd

Topicstarter
Waarom steld niemand de ubb parser van got (snot ;):?) eens beschikbaar?? :)

Verwijderd

Op maandag 11 maart 2002 20:17 schreef Stoel het volgende:
Waarom steld niemand de ubb parser van got (snot ;):?) eens beschikbaar?? :)
3x raden :P

Verwijderd

Topicstarter
Op maandag 11 maart 2002 20:40 schreef Markuz het volgende:

[..]

3x raden :P
Maar kan iemand geen antwoord geven op me vraag :D :P

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
ik probeer ook zoiets te doen maar dan een bepaald woord een achtergrondkleurtje te geven maar ik kom ook moeilijk om die smilies heen, dus heb ik alle smilies en zooi er tussen uit gegooid :(

als iemand hier dus een oplossing voor heeft... graag ;)

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Topicstarter
Op maandag 11 maart 2002 22:41 schreef SWINX het volgende:
ik probeer ook zoiets te doen maar dan een bepaald woord een achtergrondkleurtje te geven maar ik kom ook moeilijk om die smilies heen, dus heb ik alle smilies en zooi er tussen uit gegooid :(

als iemand hier dus een oplossing voor heeft... graag ;)
[..Read Topic..]

Verwijderd

Topicstarter
^^SCHOP^^

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 10:08
Als je nou eens alle [code], [php] en [noparse] tags ertussenuit haalt, in een array stopt, en dan op de plaats van de oorspronkelijke code bijvoorbeeld [code-001] (wat refereert aan de 1e set [code] tags) invoegt, kun je daarna gewoon alle UBB parsen, en daarna vervang je de [code-001] tags weer door de waarden in de array. :)

Verwijderd

Topicstarter
Op donderdag 14 maart 2002 07:53 schreef ddc het volgende:
Als je nou eens alle [code], [php] en [noparse] tags ertussenuit haalt, in een array stopt, en dan op de plaats van de oorspronkelijke code bijvoorbeeld [code-001] (wat refereert aan de 1e set [code] tags) invoegt, kun je daarna gewoon alle UBB parsen, en daarna vervang je de [code-001] tags weer door de waarden in de array. :)
Neej, het hele script werkt wel .. werkt helemaal perfect, alleen werkt me highlighter niet.. hij highlight de shit, enet het keurig terug. . dus het script werkt, maar het stukje ob_start ; enz enz enz highligh_string( enz enz enz, die werkt niet goed, hij highlight deze text:

<?php
echo "Hoi";
?>

highlight ie, en dan zegt ie dat er een error is bij die laatste " ASCII FOUT ofzow.. zie topics hierboven..

[edit]
Deze error geeft ie:

<?php
echo
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\easyphp\www\ubb\index.php3 on line 11
"hoi\";
?>

en die highlight ie goed, maar in de highlighted tekst zit dus een error volgens de highlighter..

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 10:08
Ok, dan had ik je probleem verkeerd begrepen :o

Verwijderd

Topicstarter
Op donderdag 14 maart 2002 07:57 schreef ddc het volgende:
Ok, dan had ik je probleem verkeerd begrepen :o
Maar je hebt geen idee??

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 10:08
Op donderdag 14 maart 2002 07:58 schreef Stoel het volgende:
Maar je hebt geen idee??
Ik snap niet eens wat die code doet :+
Volgens mij dat die php code kleurtjes krijgt, of niet :?

Verwijderd

Topicstarter
Op donderdag 14 maart 2002 07:59 schreef ddc het volgende:

[..]

Ik snap niet eens wat die code doet :+
Volgens mij dat die php code kleurtjes krijgt, of niet :?
Hmzz als je er niks van af weet reageer dan niet :+

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 10:08
Op donderdag 14 maart 2002 08:00 schreef Stoel het volgende:
Hmzz als je er niks van af weet reageer dan niet :+
Dan zouden er een hoop minder topics zijn :{

Btw, is wel handig voor mij, want ik schrijf ook een forum dus jij lost nu alvast de problemen op waar ik straks tegenaan loop ;) :+

Verwijderd

Topicstarter
Op donderdag 14 maart 2002 08:01 schreef ddc het volgende:

[..]

Dan zouden er een hoop minder topics zijn :{

Btw, is wel handig voor mij, want ik schrijf ook een forum dus jij lost nu alvast de problemen op waar ik straks tegenaan loop ;) :+
als je me dan ff helpt, zodat iedereen dit topic gaat lezen :D

Verwijderd

Topicstarter
Ik kan ook nergens op php.net wat vinden over deze error....
Pagina: 1