ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » BBCode-Fehler bei den Regeln

Geschlossen
  1. #1
    User Pic
    Ahrtas Moderator
    Registriert seit
    17.12.2007
    Beiträge
    2.368
    Beitragswertungen
    210 Beitragspunkte
    Also wenn ich im Adminbereich/Konfiguration die Regeln für die Seite bearbeite und dort per bbcode eine externe Seite verlinke z.B. die AGB dann sieht das dort so aus:

    [*]Mit der Registrierung aktzeptieren Sie automatisch die [url=http://www.cristiang.de/forum/index.php?agb]AGB[/url]


    Aber ausgegeben wird folgender Link:
    http://www.cristiang.de/forum/\\"http://www.cristiang.de/forum/index.php?agb\\"


    Also der Link wird komplett falsch ausgegeben, es werden die Gänzefüßchen und der umgekehrte Slash doppelt angezeigt.

    In welcher Datei von ilch muss ich es ändern, kann mir bitte jemand das Verzeichnis und die Datei nennen?

    betroffene Homepage: cristiang.de/forum


    Zuletzt modifiziert von Ahrtas am 08.03.2011 - 11:52:27
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Ahrtas Moderator
    Registriert seit
    17.12.2007
    Beiträge
    2.368
    Beitragswertungen
    210 Beitragspunkte
    Kennt einer ne Lösung für das Problem?
    Man kann es jetzt auch selbst anschauen.
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Versuch mal damit.

    includes/func/bbcode.php

    <?php
    #   Copyright by Manuel
    #   Support www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    function BBcode($s,$maxLength=40) {
      #$s = unescape($s);
    
      $coTime = str_replace(' ', '', microtime());
    	preg_match_all('/\[code\](.+)\[\/code\]/Uis',$s,$result);
    
      $s = bbcode_code_start ($s, $coTime, $result);
    
      # bbcode einheitlicher machen zum bessern pruefen.
      $s = bbcode_simple_prev ($s);
    
      #$s = preg_replace ("/(\015\012|\015|\012)/", " \\1", $s);
    
      # autoumbruch nach x zeichen
      #$s = bbcode_autonewline($s, $coTime, $maxLength);
    
      $s = htmlentities($s);
    
      # speziell bilder
      $s = bbcode_images ($s);
    
      # speziell zitate ersetzten.
      $s = bbcode_quote ($s);
    
      # replace simple
    	$s = bbcode_simple ($s);
    
    	# smilies umwandeln
    	$s = bbcode_smiles ($s);
    
      $s = preg_replace ("/\015\012|\015|\012/", "\n<br />", $s);
    
      # code zurueck ersetzten
      $s = bbcode_code_end ($s, $coTime, $result);
    
    	return ($s);
    }
    
    # diese funktion ist etwas komplizierter. und zwar wird hier versucht
    # dem problem beizukommen das immer irgendwelche spassvoegel sehr lange
    # texte schreiben die dann das design verzerren. dagegen hilft nur der
    # automatische umbruch. ich habe mir dafuer ausgedacht es gibt
    # bestimmte zeichen ab dennen die kontrolle total aus ist (url, img)
    # und es gibt zeichen ab dennen die kontrolle wieder eingeschaltet wird
    # ausserdem gibt es zeichen ab dennen wieder von vorn angefangen wird
    # zu zahlen, wird der counter erreicht wird ein leerzeichen eingefueght.
    function bbcode_autonewline ($s, $coTime,$maxLength) {
      $neu_s = '';
    
      $ar_start = array (
        '[url=http://',
        '[img]'
      );
    
      $ar_ende = array (
        ']',
        '[/img]'
      );
    
      $ar_neu = array (
        ' ',
      );
    
      $ar_next = array (' ',"\n","\r",'[/url]','[b]','[/b]','[i]','[/i]','[u]','[/u]',$coTime,'[list]','[/list]','[*]');
    
      $count   = TRUE;
      $countgr = null;
      $counter = -1;
    
      $a = strlen ($s);
      for ($i=0;$i<$a;$i++) {
        # counter raus / rein
        if ($count == TRUE) {
          foreach ($ar_start as $sk => $sv) {
            if ($s{$i} == substr($sv, 0, 1) AND preg_match("/^".preg_quote($sv, '/')."/", substr($s, $i))) {
              $count   = FALSE;
              $countgr = $sk;
              $counter = 0;
              #echo '<h1>ON</h1>';
              break;
            }
          }
        } elseif ($count == FALSE AND $s{$i} == substr($ar_ende[$countgr], 0, 1) AND preg_match("/^".preg_quote($ar_ende[$countgr], '/')."/", substr($s, $i))) {
          #echo '<h1>||'. $s{$i} .'||<br>||'.substr($s, $i, 10).'||<br>';
          #echo 'OFF</h1>';
          $count   = TRUE;
          $counter = -2;
          $countgr = null;
        }
    
        if ($count == TRUE) {
          $counter++;
    
          # ar neu?
          foreach ($ar_neu as $v) {
            if ($count == TRUE AND $s{$i} == substr($v, 0, 1) AND preg_match ("/^".preg_quote($v)."/", substr($s, $i))) {
              $counter = -3;
              break;
            }
          }
    
          # springen
          foreach ($ar_next as $v) {
            if ($s{$i} == substr($v, 0, 1) AND preg_match("/^".preg_quote($v, '/')."/", substr($s, $i))) {
              $i = $i + strlen ($v) - 1;
              $springen = true;
              $valSprin = $v;
              break;
            }
          }
          if (isset($springen) AND $springen === true) {
            $neu_s .= $valSprin;
            $springen = false;
            $valSprin = null;
            continue;
          }
    
    
          if ($counter >= $maxLength) {
            $neu_s  .= ' ';
            $counter = 0;
          }
        }
    
        $neu_s .= $s{$i};
      }
    
      /*
      $s = str_replace('</a>', ' </a>', $s);
      $lines = explode(' ',$s);
    
    	$ntxt = '';
    	foreach ($lines as $v) {
    	  if ( strpos($v,$coTime) === FALSE AND strpos ($v, 'src="') === FALSE AND strpos ($v, 'href="') === FALSE AND strpos ($v, '</table>') === FALSE) {
    		  $ntxt .= chunk_split($v, $maxLength, ' ').' ';
        } else {
    		  $ntxt .= $v.' ';
    		}
    	}
    	$s = $ntxt;
      $s = str_replace(' </a>', '</a>', $s);
      */
      return($neu_s);
    }
    
    function bbcode_images ($s) {
      global $allgAr;
    
      preg_match_all('/\[img\](http|https):\/\/([^\ \?&=\#\"\n\r\t<>]+)\.(gif|jpeg|jpg|png)\[\/img\]/Ui',$s,$imgRs);
    
    	$max_breite = 0;
    	if (isset($allgAr['allg_bbcode_max_img_width'])) {
        $max_breite = $allgAr['allg_bbcode_max_img_width'];
    	}
      $endung = array (1 => 'gif', 2 => 'jpg', 3 => 'png');
    
      if ( isset ($imgRs[0][0]) ) {
        for($i=0;$i<count($imgRs[0]);$i++) {
      	  $imgstr = $imgRs[1][$i].'://'.$imgRs[2][$i].'.'.$imgRs[3][$i];
          $size   = @getimagesize($imgstr);
    			$breite = $neueBreite = $size[0];
          $hoehe  = $neueHoehe  = $size[1];
          $er     = '';
          if (isset($endung[$size[2]]) OR !is_array($size)) {
            $er = '<img style="border: none;" src="'.$imgstr.'" />';
            if ( $breite > $max_breite ) {
              $neueHoehe  = intval($hoehe*$max_breite/$breite);
              $neueBreite = $max_breite;
              $er = '<a href="'.$imgstr.'" target="_blank"><img height="'.$neueHoehe.'" width="'.$neueBreite.'" style="border: none;" src="'.$imgstr.'" /></a>';
            }
          }
          $s = str_replace($imgRs[0][$i],$er,$s);
        }
      }
      return($s);
    }
    
    function bbcode_quote ($s) {
     	$tpl = new tpl ( 'zitatreplace.htm' );
    	$header1_quote = $tpl->get(0);
    	$header2_quote = $tpl->get(1);
    	$footer1_quote = $tpl->get(2);
    	unset($tpl);
      $i=0;
      while(strpos($s,"[/quote]")!==FALSE AND $i < 5 ) {
        $i++;
        $s = preg_replace("#\[quote\=([^\]]*)\](.*)\[\/quote\]#Uis",$header1_quote."geschrieben von \\1".$header2_quote."\\2".$footer1_quote, $s);
        $s = preg_replace("/\[quote\](.*)\[\/quote\]/Usi", $header1_quote.$header2_quote."\\1".$footer1_quote, $s );
      }
      return ($s);
    }
    
    function bbcode_simple_prev ($s) {
      $search = array (
        "/(^|[^=\]\>\"])http:\/\/(www\.)?([^\s\"\<\[]*)/i",
        "/\[url\]http:\/\/(www\.)?(.*?)\[\/url\]/si",
      );
    
    	$replace = array (
        "\\1[url]http://\\2\\3[/url]",
        "[url=http://\\1\\2]\\2[/url]",
    	);
    
    	$s = preg_replace($search, $replace, $s);
      return ($s);
    }
    
    function bbcode_simple ($s) {
      $page = preg_quote(dirname(str_replace('www.','',$_SERVER["HTTP_HOST"]).$_SERVER["SCRIPT_NAME"]), '/');
      $search = array (
        "/\[b\](.*?)\[\/b\]/si",
        "/\[i\](.*?)\[\/i\]/si",
        "/\[u\](.*?)\[\/u\]/si",
        "/\[url=http:\/\/(www\.)?(".$page.")(.*?)](.*?)\[\/url\]/si",
        "/\[url=http:\/\/(www\.)?(.*?)\](.*?)\[\/url\]/si",
        "/\[list(=1)?\](.+)\[\/list\]/Usie",
        "/(script|about|applet|activex|chrome):/is",
      );
    
    	$replace = array (
        "<b>\\1</b>",
        "<i>\\1</i>",
        "<u>\\1</u>",
        "<a href=\"http://\\1\\2\\3\">\\4</a>",
        "<a href=\"http://\\1\\2\" target=\"_blank\">\\3</a>",
        "bbcode_simple_list ('\\1', '\\2')",
        "\\1&#058;",
    	);
    
    	$s = preg_replace($search, $replace, $s);
      return ($s);
    }
    
    function bbcode_simple_list ($w, $s) {
      $items = explode('[*]', stripslashes($s));
      $lis = '';
      foreach ($items as $i){
          $i = trim($i);
          if (!empty($i)) {
              $lis .= '<li>' . $i . '</li>';
          }
      }
      if ($w == '=1') {
        return ('<ol>'.trim($lis).'</ol>');
      }
    
      return ('<ul>'.trim($lis).'</ul>');
    }
    
    function bbcode_smiles ($s) {
      global $global_smiles_array;
      if (!isset($global_smiles_array)) {
        $global_smiles_array = array();
        $erg = db_query("SELECT ent, url, emo FROM `prefix_smilies`");
    	  while ($row = db_fetch_object($erg) ) {
    		  $global_smiles_array[$row->ent] = $row->emo.'#@#-_-_-#@#'.$row->url;
    	  }
      }
      foreach ($global_smiles_array as $k => $v) {
        list($emo, $url) = explode('#@#-_-_-#@#', $v);
        $s = str_replace($k,'<img src="include/images/smiles/'.$url.'" border="0" alt="'.$emo.'" title="'.$emo.'" />',$s);
      }
      return ($s);
    }
    
    function bbcode_code_start ($s, $coTime, $result) {
    	for ($i=0;$i<count($result[1]);$i++) 	{
    		if ($result[0][$i]) {
    		  $s = str_replace ($result[0][$i],'#'.$coTime.'#'.$i.'#'.$coTime.'#',$s);
    		}
    	}
      return ($s);
    }
    
    function bbcode_code_end ($s, $coTime, $result) {
    	$tpl = new tpl ( 'codereplace.htm' );
    	for ($i=0;$i<count($result[1]);$i++) {
    		if ($result[1][$i]) {
    			ob_start();
    			#$result[1][$i] = str_replace ('&lt;', '<', str_replace('&gt;', '>', $result[1][$i]));
          #$codereplace = highlight_string(trim($result[1][$i]), 1);
    			highlight_string(trim($result[1][$i]));
    			$codereplace = ob_get_contents();
    			ob_end_clean();
    			$newstring = $tpl->set_get ( 'CODEREPLACE', $codereplace, 0);
    			$s = str_replace('#'.$coTime.'#'.$i.'#'.$coTime.'#',$newstring,$s);
    		}
    	}
    	unset($tpl);
      return ($s);
    }
    ?>
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Ahrtas Moderator
    Registriert seit
    17.12.2007
    Beiträge
    2.368
    Beitragswertungen
    210 Beitragspunkte
    Vielen Dank, hat funktioniert. lachen
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten