Codes knippen / Database

Status
Niet open voor verdere reacties.
Nu echoot hij alles tussen [ php] en [ /php] als:

PHP:
<?php 1?>

Gr. Ronald!:)
 
Niet alles.. Hij kijkt of er een <?php en een ?> is gevonden. Als dat zo is dan wijzigt hij die.

Zet anders een spatie tussen de ?> en de //1 binnen de preg_match-es
 
moesten er geen // voor die 1.

Ik heb het geprobeerd, maar er gaat nog steeds iets fout. Ik moet er zelf nog even grondig naar kijken, ik heb nu helaas even geen tijd. Ik zal er morgen nog weer even naar kijken en dan hoor je weer van me.

Hartelijk bedankt voor de moeite vast weer zover:thumb:

Gr. Ronald!:)
 
Die moet //1 zorgt er juist voor dat het juiste deel vervangen wordt :)

Probeer deze eens:
PHP:
if(preg_match("/\[php\]\<\?php (.+) \?\>\[\/php\]/Usi", $value)) {
        $returns[] = preg_replace("/\[php\](.+)\[\/php\]/Usie", "highlight_string('\\1', true)", $value);
      } elseif(preg_match("/\[php\](.+) \?\>\[\/php\]/Usi", $value)) {
        $returns[] = preg_replace("/\[php\](.+)\[\/php\]/Usie", "highlight_string('<?php \\1', true)", $value);
      } elseif(preg_match("/\[php\]\<\?php (.+)\[\/php\]/Usi", $value)) {
        $returns[] = preg_replace("/\[php\](.+)\[\/php\]/Usie", "highlight_string('\\1?>', true)", $value);
      } else {
        $returns[] = preg_replace("/\[php\](.+)\[\/php\]/Usie", "highlight_string('<?php \\1?>', true)", $value);
      }
 
Na lange tijd weer terug, ik was er even tussen uit.
Ik ben nu weer ff bezig met het highlighten, maar er gaat iets goed fout.

Hij zet wat ik ook intyp overal <?php voor en ?> achter. Dus zet ik na mijn [ php] <?php, dan zet de code het er nog een keer neer zo ook voor <? en als ik er niks neerzet.

<?php | <?php
<?php | <?
Verder code | Verder code
?> | ?>
?> | ?>

zo krijg je het dus. Ook zet hij bij mijn " een \ ervoor. Ik had getypt:
PHP:
$var1 = "5"; 
$var2 = "7"; 
$som = $var1 + $var2; 

echo $som;

En hij gaf weer:
PHP:
$var1 = "5\"; 
$var2 = \"7\"; 
$som = $var1 + $var2; 

echo $som;

De hele code werd vanaf het eerste aanhalingsteken (die voor de 5), werd alles ook rood.

En als ik een zin typ dan paar spaties en begin dan met mijn php tag. Hij zet in het uiteindelijke resultaat de zin neer en direct achter de zin de <?php.

Er gaat dus vanalles fout.

Dit is nu mijn functie:
PHP:
function formatPHP($string, $breakline) {
  $escapeChars = array(
    "[" => "\[",
    "]" => "\]",
    "/" => "\/",
    "<" => "\<",
    ">" => "\>",
    "$" => "\\$",
    "?" => "\?",
    ";" => "\;",
    "(" => "\(",
    ")" => "\)",
    "*" => "\*",
    "+" => "\+"
  );
  if(preg_match_all("/\[php\](.+)\[\/php\]/Usi", $string, $matches)) {
    $count = 0;
    foreach($matches[0] AS $value) {
      if(preg_match("/\[php\]\<\?php(.+)\?\>\[\/php\]/Usi", $value)) { 
        $returns[] = preg_replace("/\[php\](.+)\[\/php\]/Usie", "highlight_string('\\1', true)", $value); 
      } elseif(preg_match("/\[php\](.+)\?\>\[\/php\]/Usi", $value)) { 
        $returns[] = preg_replace("/\[php\](.+)\[\/php\]/Usie", "highlight_string('<?php \\1', true)", $value); 
      } elseif(preg_match("/\[php\]\<\?php(.+)\[\/php\]/Usi", $value)) { 
        $returns[] = preg_replace("/\[php\](.+)\[\/php\]/Usie", "highlight_string('\\1?>', true)", $value); 
      } else { 
        $returns[] = preg_replace("/\[php\](.+)\[\/php\]/Usie", "highlight_string('<?php \\1?>', true)", $value); 
      } 
      foreach($escapeChars AS $char => $rep) {
        $value = str_replace($char, $rep, $value);
      }
      $matches[0][$count] = '/'. $value .'/';
      $count++;
    }
    $result = preg_replace($matches[0], $returns, $string);
  } else {
    $result = $string;
  }
  if(isset($breakline) && $breakline == true) {
    return nl2br($result);
  } else {
    return $result;
  }
}

Dit staat bij het invoeren in database:
PHP:
$titel = $_POST['titel']; 
$tutorial = $_POST['tutorial'];
$query = "INSERT INTO table_tutorials SET titel = '".$titel."', tutorial = '".$tutorial."', type='php'";

Gewoon dus eigenlijk, hij plaatst um ook prima.

En dit bij uithalen uit database:
PHP:
		$rij = mysql_fetch_array($sql);
			$id = $rij['id'];
			$titel = $rij['titel'];
			$tutorial = $rij['tutorial'];
			$phpTutorial = formatPHP($tutorial, false);
			echo "<span class='tut_title'>".$titel."</span><br>";
			echo $phpTutorial;
			echo "<hr noshade>";
			echo "<a href='?page=tutorials&tut=".$_GET['tut']."'>Terug naar ".$tut." tutorial menu</a><br>"; 
			echo "<a href='?page=tutorials'>Terug naar tutorial menu</a>";

Ik hoop dat er wat op gevonden kan worden!:thumb:

Gr. Ronald!:)
 
Hij zet wat ik ook intyp overal <?php voor en ?> achter. Dus zet ik na mijn [ php] <?php, dan zet de code het er nog een keer neer zo ook voor <? en als ik er niks neerzet.
Is logisch, als je naar de php-pagina van highlight_string() had gekeken was het duidelijk geweest dat die functie vereist dat er php-open- en -sluiten-tags worden gebruikt.

De reden dat hij in jouw voorbeeld er ook een <? voor zet zit hem in die spatie er voor. Makkelijk te verhelpen door de functie trim() toe te passen binnen de gecreeerde functie.
<?php | <?php
<?php | <?
Verder code | Verder code
?> | ?>
?> | ?>

zo krijg je het dus.
:shocked: Wat moet ik hier in zien?
Ook zet hij bij mijn " een \ ervoor. Ik had getypt:
Waarschijnlijk komt dat door het gebruik van dubbele quotes hier
PHP:
 echo "<span class='tut_title'>".$titel."</span><br>";
            echo $phpTutorial;
            echo "<hr noshade>";
            echo "<a href='?page=tutorials&tut=".$_GET['tut']."'>Terug naar ".$tut." tutorial menu</a><br>"; 
            echo "<a href='?page=tutorials'>Terug naar tutorial menu</a>";
Probeer deze eens:
PHP:
echo '
<span class="tut_title">'. $titel .'</span><br />
 '. $phpTutorial .'
<hr noshade>
<a href="?page=tutorials&tut='.$_GET['tut'].'">Terug naar '. $tut .' tutorial menu </a><br />
<a href="?page=tutorials">Terug naar tutorial menu</a>';
 
PHP:
echo '
<span class="tut_title">'. $titel .'</span><br />
 '. $phpTutorial .'
<hr noshade>
<a href="?page=tutorials&tut='.$_GET['tut'].'">Terug naar '. $tut .' tutorial menu </a><br />
<a href="?page=tutorials">Terug naar tutorial menu</a>';

Dit werkt niet, ik krijg dezelfde output. Weer dat alles rood is en met die slashes.

Hoe krijg ik het voor elkaar dan, dat als ik begin met <?php, hij er niet nog een keer <?php bijzet. zo ook voor <? en het einde ?>.

Wat ik bedoel met:
<?php | <?php
<?php | <?
Verder code | Verder code
?> | ?>
?> | ?>

Dit zijn 2 rijtjes code naast elkaar. De eerste heb ik zelf <?php en ?> getypt, maar hij zet ze er nog een keer bij.
Bij het tweede rijtje heb ik <? verdere code ?> getypt en zet hij er dus ook weer <?php en ?> bij.

Dus deze 2 dingen zou ik graag eerst oplossen:thumb:. Daarna wil ik graag ook nog dat de code goed onder de normale tekst komt te staan.

Als ik nu typ:
Dit is een tutorial
PHP:
<?php 
$var = 1;
//Test
$som = $var1 + 7;
echo $som;

Krijg IK:
Dit is een tutorial
PHP:
<?php 
$var = 1;
//Test
$som = $var1 + 7;
echo $som;

Wat ik bij die 2e bedoel is dat bij mij <?php achter Dit is een tutorial komt te staan:

PHP:
Dit is een tutorial<?php 
$var = 1;
//Test
$som = $var1 + 7;
echo $som;

Bedankt maar vast weer;)

Gr. Ronald!:)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan