Versio

Weer zo'n replace fout

Overzicht Reageren

Henk en Annie

Henk en Annie

13/09/2009 19:06:00
Quote Anchor link
Hoe krijg ik het onderstaande script werkend? Ik denk dat jullie wel weten wat er moet gebeuren. De functie werkt wel goed. Maar hoe zorg ik ervoor dat de code tusen [ c ode] en [ / code] wel werkt?

Hij geeft nu de volgende fout:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in G:\UsbWebserver2\Root\PHP\UBB\replace.php on line 81


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Highlightfunctie
function customHighlight($code){
    $code = highlight_string($code, true);
    $aLines = explode("<br />", $code);
    $iLines = count($aLines);

    $output = "<table><tr><td class=num>\n";
    for($i=1;$i<=$iLines;$i++){
    $output .= $i ."<br />";
    }

    $output .= "\n</td><td>\n$code\n</td></tr></table>";

    return $output;
}


$string = preg_replace("_\(.*)\[/code\]_si", customHighlight($1), $string);
?>
Gewijzigd op 01/01/1970 01:00:00 door Henk en Annie
 
PHP hulp

PHP hulp

25/05/2012 19:29:59
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Yearupie Achternaamloos

Yearupie Achternaamloos

13/09/2009 19:12:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
customHighlight($1)
?>


Dit klopt niet, een $ kan nooit met een cijfer beginnen.
 
- SanThe -

- SanThe -

13/09/2009 19:12:00
Quote Anchor link
Line 81?
 
Henk en Annie

Henk en Annie

13/09/2009 19:19:00
Quote Anchor link
@Yearupie,
Ja dat wist ik, maar aangezien (.*) wordt toegewezen aan $1 dacht ik dat ik die moest gebruiken, maar niet dus. Hoe kan ik anders de tekst tussen de code-tags highlighten met die functie?

@SanThe,
Ja, tis een deel uit een functielijst van mij.
 
Mark L

Mark L

13/09/2009 20:06:00
Quote Anchor link
$1 moet tussen aanhalingstekens. Alleen weet ik niet zeker of hij dan de functie goed uitvoert.

Hier zie je hoe je het zou kunnen doen, het is wat veel, maar zelf weet ik geen betere manier om er voor te zorgen dat:
1). een code-tag NIET verandert word als deze in een andere code-tag staat
2). een functie uitvoeren om te highlighten (of wat je dan wilt)
http://www.phphulp.nl/forum/showtopic.php?id=66913&cat=1
 
Henk en Annie

Henk en Annie

14/09/2009 20:44:00
Quote Anchor link
Tussen aanhalingstekens werkt niet.
Van die tweede snap ik niks, maar ik zal het even grondig doornemen.
BTW weet niemand anders het? :P

De tweede klopt geen zak van. Geeft allemaal fouten.
Gewijzigd op 01/01/1970 01:00:00 door Henk en Annie
 
Mark L

Mark L

14/09/2009 21:16:00
Quote Anchor link
Wat voor fouten? Ik doelde trouwens op mijn één-na-laatste post in dat topic (en dan het onderste stukje code).

Ik had 't nog getest, wat voor fouten?
 
GaMer B

GaMer B

14/09/2009 21:58:00
Quote Anchor link
Je moet ook niet preg_replace maar preg_callback preg_replace_callback gebruiken hiervoor :)
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
 
Henk en Annie

Henk en Annie

15/09/2009 08:45:00
Quote Anchor link
Owkee :)
Let's have a look
 
Henk en Annie

Henk en Annie

18/09/2009 12:55:00
Quote Anchor link
Ehm kan je en voorbeeldje geven hoe ik dat meot toepassen in het script?
Ik heb iets anders geprobeerd, namelijk het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$string= preg_replace ("#\[code\](.*)\[/code\]#", customHighlight('\\1'), $string);


Hij geeft regelnummers wel aan, maar dan staat de code
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo "hoi"; ?>
niet weer. Als ik dan in de broncode kijk staat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ... ?>
als commentaar...
 
Henk en Annie

Henk en Annie

20/09/2009 09:12:00
Quote Anchor link
De oplossing is gevonden!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Highlightfunctie
function customHighlight($code){
    $code = highlight_string($code[1], true);
    $aLines = explode("<br />", $code);
    $iLines = count($aLines);
 
    $output = "<table><tr><td class=num>\n";
    for($i=1;$i<=$iLines;$i++){
    $output .= $i ."<br />";
    }

    $output .= "\n</td><td>\n$code\n</td></tr></table>";
 
    return $output;
}

$string = "[ code]<?php\necho 'test';\necho 'aap';\n?>[ /code]";
$string= preg_replace_callback("#\[code\](.*?)\[/code\]#s", "customHighlight", $string);
echo $string;
?>
 
Henk en Annie

Henk en Annie

23/09/2009 12:26:00
Quote Anchor link
Maar dan iets wat nog kutter is
Waarom wordt "
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php" weggelaten in het highlighten?
Als ik dan in de broncode kijk staat <?php als commentaar..
 
Kumkwat Trender

Kumkwat Trender

23/09/2009 12:28:00
Quote Anchor link
Vietnam schreef op 23.09.2009 12:26:
Maar dan iets wat nog kutter is
Waarom wordt "
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php" weggelaten in het highlighten?
Als ik dan in de broncode kijk staat <?php als commentaar..[/quote]

htmlentities eroverheen...
 
Jan Willem van der Veer

Jan Willem van der Veer

23/09/2009 13:00:00
Quote Anchor link
Quote:
htmlentities eroverheen...
Nee, daar zit ie op te wachten denk ik... Volledige HTML in de browserview door htmlentities... Zat eigenlijk wat meer aan str_replace, strtr te denken...
 
Kumkwat Trender

Kumkwat Trender

23/09/2009 14:46:00
Quote Anchor link
Jan Willem van der Veer schreef op 23.09.2009 13:00:
Quote:
htmlentities eroverheen...
Nee, daar zit ie op te wachten denk ik... Volledige HTML in de browserview door htmlentities... Zat eigenlijk wat meer aan str_replace, strtr te denken...


.........
 



Overzicht Reageren