Toon posts:

[php] output van dit script in 1 lijn?

Pagina: 1
Acties:
  • 42 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik krijg het maar niet voor elkaar, heb vanalles geprobeerd maar kan niet uitvinden waar het aan ligt :(

PHP:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?

function phpReplace($txt) {

    ob_start();
    highlight_string($txt);
    $txt = ob_get_contents();
    ob_end_clean();

    $txt = explode('<br />',$txt);

    for ($i = 1; $i < count($txt)+1; $i++) {
        $srcnums .=  $i . "<br>";
    }


    for ($i = 0; $i < count($txt); $i++) {
        $srclines .= $txt[$i] . "<br />";
    }

    $src = "<table border=\"0\" cellpadding=\"4\" cellspacing=\"0\" class=\"phphighlight\"><tr><td class=\"phphighlightline\">" . $srcnums .
    "</td><td nowrap class=\"phphighlightcode\"><font color=\"#0000CC\"><code>" . $srclines . $txt[count($txt)] . "</code></font></td></tr></table>";

    return $src;
}


$text = "[php]<?
echo test;
?> [/php]
hallo
[php]hoi[/php]";

$regex = "!\\[php\](.*?)\\[\/php\]!ism";
preg_match_all($regex, $text, $output);
for ($x = 0; $x < count($output[1]); $x++) {
    $text = str_replace($output[0][$x], phpReplace($output[1][$x]),$text);
}

echo '<link rel="stylesheet" href="got.css">';

$text = addslashes($text);
$text = str_replace('\r\n', '<br />', $text);
$text = str_replace('\r', '<br />', $text);
$text = str_replace('\n', '<br />', $text);

echo $text;

?>


:? wie heeft het verlossende antwoord? :'(

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 30-08 20:34
Elke enter een echo maken

Niet zo:
PHP:
1
2
3
4
5
6
<?php
echo "hoi
doei
flip
flap";
?>


maar zo:

PHP:
1
2
3
4
5
6
7
8
<?php

echo "flip";
echo "liep";
echo "op de trap";
echo "toen blabla";

?>

  • AK47
  • Registratie: Juli 2001
  • Laatst online: 04-05-2024
Wat gaat er precies fout :?

  • AK47
  • Registratie: Juli 2001
  • Laatst online: 04-05-2024
Ik snap het al, je moet met \n & \r gaan werken natuurlijk...

PHP:
1
2
3
<?php
echo "flip \nliep \nop de trap \ntoen blabla";
?>

Verwijderd

Topicstarter
de $text moet er zo ingaan anders kan ik de lijnen niet converteren ;) maar hij moet er als 1 lijn uitkomen :{

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Tussen single-quotes worden escape-reeksen niet geparsed ofwel:
'\n'
is gelijk aan
"\\n"
Hierdoor ziet str_replace jouw needle niet als newlines maar als de absolute-tekst: \n.

Oplossing:
PHP:
42
43
44
45
$text = addslashes($text);
$text = str_replace("\r\n", '<br />', $text);
$text = str_replace("\r", '<br />', $text);
$text = str_replace("\n", '<br />', $text);

Et voila.

[ Voor 0% gewijzigd door CyberSnooP op 13-10-2002 20:40 . Reden: start regelnummer + extra uitleg ]

|_____vakje______|


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 11:11
Ik had hem diezelfde oplossing ook al via icq verteld.

Verwijderd

Topicstarter
:D Jullie zijn geweldig, idd best dom :'( maar weer wat geleerd

*noteert*

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
en volgens mij moet die addslashes ook weg, anders krijg je hele rare source:

code:
1
<table border=\"0\" cellpadding=\"4\" cellspacing=\"0\" class=\"phphighlight\"> enz...

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 11:11
RdeTuinman schreef op 13 oktober 2002 @ 20:44:
en volgens mij moet die addslashes ook weg, anders krijg je hele rare source:

code:
1
<table border=\"0\" cellpadding=\"4\" cellspacing=\"0\" class=\"phphighlight\"> enz...
Blijf jij maar even tuinman ;)

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

ddc schreef op 13 oktober 2002 @ 20:45:
Blijf jij maar even tuinman ;)
Gemeen.. Rob hij heeft helemaal gelijk.. maar waarschijnlijk wil xtenic $text uitvoeren als string in een javascriptsel (zie ook React-output :)) en die moet wel geslashed zijn.. maar dat kun je helemaal niet weten

|_____vakje______|


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Ok, dan hebben we allebei een beetje gelijk :) Ligt er idd aan waar je het voor gebruikt ;)

Verwijderd

Topicstarter
nu de probleem dat de output

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
&lt;?

    for ($i = 1; $i &lt; count($text); $i++) {
        $src .= $i . '&lt;br&gt;';
    }

    for ($i = 0; $i &lt; count($text)-1; $i++) {
        $src .= $text[$i] . '&lt;br /&gt;';
    }

    $src .= $text[count($text)];

    return $src;
?&gt;


is :(

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Verwijderd schreef op 13 oktober 2002 @ 21:14:
nu de probleem dat de output [code-knip] is :(
Je zou toch moeten weten dat wij geen hier-is-mijn-code,-hij-doet-het-niet-fix-het-maar-forumpje zijn :|

|_____vakje______|


Verwijderd

Topicstarter
CyberSnooP schreef op 13 oktober 2002 @ 21:42:
[...]
Je zou toch moeten weten dat wij geen hier-is-mijn-code,-hij-doet-het-niet-fix-het-maar-forumpje zijn :|
klopt en dat vraag ik deze keer ook niet, alleen om een hint hoe ik dit wel goed krijg :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

nou, hoe ziet de output van htmlentities (en wat doet hightlight_string precies?) er normaliter uit?

Veel plezier met debuggen van je code verder.

Verwijderd

Topicstarter
Nou ik heb vanalles geprobeerd maar de ene krijg ik image 1 en als ik het implementeer in me forum krijg ik image 2

image 1
Afbeeldingslocatie: http://members.home.nl/txeg/goodphp.jpg

image 2
Afbeeldingslocatie: http://members.home.nl/txeg/badphp.jpg

ben er al achter, lag aan de data in de database ;)

handig :P

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

het eerste is de output van highligt_string
het tweede van htmlspecialchars of htmlentities.
Als dat 2e letterlijk "highlight_string('<? for($i = 1; etc;)?>');| is dan zul je tot de conclusie is dat je php iets fouts doet.
Als het dat niet letterlijk is ga je het pad van de string volgen en elke keer dat ie zou kunnen veranderen echo je hem naar je scherm.
Kortom, debug je code en doe dat alsjeblieft zelf.

Waar je de fout in gaat kan ik niet eens raden, ik raad jou echter aan te proberen rustig naar je code te kijken en es begrijpend te lezen, ipv ons steeds alles uit jou te moeten laten trekken.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Zie je wel...
Altijd je invoer en uitvoer controleren en nooit gelijk maar een topic openen!
Pagina: 1

Dit topic is gesloten.