Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
PHP Script auf PHP 7.1 Updaten
Der Doktor Offline
%0|%0

Beiträge: 7.872
Registriert seit: Dec 2008
Beitrag #11
RE: PHP Script auf PHP 7.1 Updaten
(11.04.2017 18:31)Michael_ schrieb:  Hier mal alle vorkommen dieses Modifiers, wenn ich die zeilen alle auskommentier dann wird das forum angezeigt und es kommen keine Fehlermeldung.
Allerdings werden BBCodes nicht richtig umgewandelt

Code:
$searcharray[]="/\[list=(['\"]?)([^\"']*)\\1](.*)\[\/list((=\\1[^\"']*\\1])|(\]))/esiU";
Code:
$searcharray[]="/\[list](.*)\[\/list\]/esiU";
Code:
$searcharray[]="/\[url=(['\"]?)([^\"']*)\\1](.*)\[\/url\]/esiU";
Code:
$searcharray[]="/\[url]([^\"]*)\[\/url\]/esiU";
Code:
$searcharray[]="/\[code](.*)\[\/code\]/esiU";
Code:
$searcharray[]="/\[php](.*)\[\/php\]/esiU";

Wie kann ich das nun anpassen das mein Forum funktioniert?

möglicherweise kann mir jemand diese zeilen anpassen? wäre super und das forum würde problemlos laufen. :)

Der e modifier am Ende muss raus, weil er deinen Code unsicher macht. Deswegen wurde er auch in den neusten PHP Versionen verboten

Es ist besser nicht zu moderieren als falsch zu moderieren
11.04.2017 18:53
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.510
Registriert seit: Feb 2011
Beitrag #12
RE: PHP Script auf PHP 7.1 Updaten
Ich hab im Internet eine Anleitung gefunden und folgendes zusammengestellt.

Fehlermeldung
Parse error: syntax error, unexpected 'var' (T_VAR), expecting end of file in /www/htdocs/w0125294/wbboard/_functions.php on line 3

Code:
Finde

<?php

Füge darunter ein

var $search_replace = array();

Suche

  $searcharray[]="/\[list=(['\"]?)([^\"']*)\\1](.*)\[\/list((=\\1[^\"']*\\1])|(\]))/esiU";
  $replacearray[]="formatlist('\\3', '\\2')";

ersetze mit

$this->search_replace['/\[list=(['\"]?)([^\"']*)\\1](.*)\[\/list((=\\1[^\"']*\\1])|(\]))/siU']=function($matches) {return $this->formatlist($matches[3],$matches[2]);};

Suche

  $searcharray[]="/\[list](.*)\[\/list\]/esiU";    
  $replacearray[]="formatlist('\\1')";

ersetze mit

$this->search_replace['/\[list](.*)\[\/list\]/siU']=function($matches) {return $this->formatlist($matches[1]);};

suche

  $searcharray[]="/\[url=(['\"]?)([^\"']*)\\1](.*)\[\/url\]/esiU";
  $replacearray[]="formaturl('\\2','\\3')";

ersetze mit

$this->search_replace['/\[url=(['\"]?)([^\"']*)\\1](.*)\[\/url\]/siU']=function($matches) {return $this->formaturl($matches[2],$matches[3]);};

suche

  $searcharray[]="/\[url]([^\"]*)\[\/url\]/esiU";    
  $replacearray[]="formaturl('\\1')";

ersetze mit

$this->search_replace['/\[url]([^\"]*)\[\/url\]/siU']=function($matches) {return $this->formaturl($matches[1]);};

suche

  $searcharray[]="/\[code](.*)\[\/code\]/esiU";    
  $replacearray[]="formatcodetag('\\1')";

ersetze mit

$this->search_replace['/\[code](.*)\[\/code\]/siU']=function($matches) {return $this->formatcodetag($matches[1]);};

suche

  $searcharray[]="/\[php](.*)\[\/php\]/esiU";    
  $replacearray[]="phphighlite('\\1')";

ersetze mit

$this->search_replace['/\[php](.*)\[\/php\]/siU']=function($matches) {return $this->phphighlite($matches[1]);};

suche

$out = preg_replace($searcharray, $replacearray, $out);

Füge darüber ein

$out = preg_replace_callback_array($this->search_replace, $out);

Kann mir jemand erklären warum das nicht funktioniert?
(Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2017 19:11 von Michael_.)
11.04.2017 19:10
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DosAmp Offline
Anderes Zeigegerät

Beiträge: 12.219
Registriert seit: Jul 2008
Beitrag #13
RE: PHP Script auf PHP 7.1 Updaten
Die Fehlermeldung macht jeweils ohne die modifizierte Quellcodedatei wenig Sinn.

In dem Falle muss das Schlüsselwort var weg. Das ist ohnehin ein veraltetes Sprachelement aus PHP 4 für public-Mitglieder einer Klasse.
Variablen im globalen bzw. aktuellen Scope definiert man ohne Weiteres.

(11.04.2017 18:22)jeix schrieb:  was genau macht phphighlite()? finde nix über google.

Scheint eine selber definierte Funktion von WBB zu sein.

CCITTグループ4またはZIP圧縮のモノクロ300dpiで最高の再現性
(Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2017 19:49 von DosAmp.)
11.04.2017 19:48
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.510
Registriert seit: Feb 2011
Beitrag #14
RE: PHP Script auf PHP 7.1 Updaten
Fatal error: Uncaught Error: Using $this when not in object context in /www/htdocs/w0125294/wbboard/_functions.php:1966 Stack trace: #0 /www/htdocs/w0125294/wbboard/_functions.php(704): prepare_code('Junge <img src=...') #1 /www/htdocs/w0125294/wbboard/thread.php(113): editSignatur('Junge <img src=...', '0') #2 {main} thrown in /www/htdocs/w0125294/wbboard/_functions.php on line 1966

Hier die komplette Datei

https://www.pastiebin.com/58ed277beef65

ich hab eigentlich nur

<?php

drunter

$search_replace = array();

PHP-Code:
#  $searcharray[]="/[list=(['"]?)([^"']*)\1](.*)[/list((=\1[^"']*\1])|(]))/esiU";
#  $replacearray[]="formatlist('\3', '\2')"; 
#  $searcharray[]="/[list](.*)[/list]/esiU";    
#  $replacearray[]="formatlist('\1')"; 
#  $searcharray[]="/[url=(['"]?)([^"']*)\1](.*)[/url]/esiU";
#  $replacearray[]="formaturl('\2','\3')";
#  $searcharray[]="/[url]([^"]*)[/url]/esiU";    
#  $replacearray[]="formaturl('\1')";
#  $searcharray[]="/[code](.*)[/code]/esiU";    
#  $replacearray[]="formatcodetag('\1')";
#  $searcharray[]="/[php](.*) 
/esiU";
# $replacearray[]="phphighlite('\1')";
[/php]

Alle mit # versehen

und dann darunter

Code:
$this->search_replace['/\[list=([\'"]?)([^"\']*)\1](.*)\[\/list((=\1[^"\']*\1])|(\]))/siU']=function($matches) {return $this->formatlist($matches[3],$matches[2]);};

eingefügt

sowie unter

Code:
if ($phpversionnum<"4.0.5") $bbcode=str_replace("'", "\'", $out);

das hier eingefügt

$out = preg_replace_callback_array($this->$search_replace, $out);

Ich glaube jetzt haben wirs dann bald. :D
kann mir jemand noch beim letzten schritt behilflich sein?
(Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2017 20:02 von Michael_.)
11.04.2017 20:01
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DosAmp Offline
Anderes Zeigegerät

Beiträge: 12.219
Registriert seit: Jul 2008
Beitrag #15
RE: PHP Script auf PHP 7.1 Updaten
$this-> macht außerhalb eines Objekts genauso wenig Sinn. Entferne das und füge $search_replace stattdessen zur Liste von global-Variablen hinzu.

Außerdem wird der Code als Nächstes auf die Nase fallen, wenn du nicht alle einfachen Anführungsstriche innerhalb des Strings per Backslash escapest.
PHP-Code:
$search_replace['/[list=([\'"]?)([^"\']*)1](.*)[/list((=1[^"\']*1])|(]))/siU'] = function($matches) {return formatlist($matches[3],$matches[2]);}; 

Ein Editor mit Syntaxhervorhebung ist dabei sehr nützlich.

Den letzten Aufruf von preg_replace kannst du dann ganz entfernen, wenn du alle Zeilen für $searcharray und $replacearray in der Form umgewandelt hast.

CCITTグループ4またはZIP圧縮のモノクロ300dpiで最高の再現性
(Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2017 20:24 von DosAmp.)
11.04.2017 20:13
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.510
Registriert seit: Feb 2011
Beitrag #16
RE: PHP Script auf PHP 7.1 Updaten
DANKE!!!!!

Code:
/**
* @return out string
* @param out string
* @desc Ersetzt in out alle bbcodes..
*/

function prepare_code($out) {

global $db_zugriff,$n,$searcharray,$replacearray,$search_replace;
$phpversionnum = phpversion();

if(!isset($searcharray) && !isset($replacearray)) {
#  $searcharray[]="/\[list=(['\"]?)([^\"']*)\\1](.*)\[\/list((=\\1[^\"']*\\1])|(\]))/esiU";
#  $replacearray[]="formatlist('\\3', '\\2')";
#  $searcharray[]="/\[list](.*)\[\/list\]/esiU";    
#  $replacearray[]="formatlist('\\1')";
#  $searcharray[]="/\[url=(['\"]?)([^\"']*)\\1](.*)\[\/url\]/esiU";
#  $replacearray[]="formaturl('\\2','\\3')";
#  $searcharray[]="/\[url]([^\"]*)\[\/url\]/esiU";    
#  $replacearray[]="formaturl('\\1')";
#  $searcharray[]="/\[code](.*)\[\/code\]/esiU";    
#  $replacearray[]="formatcodetag('\\1')";
#  $searcharray[]="/\[php](.*)\[\/php\]/esiU";    
#  $replacearray[]="phphighlite('\\1')";

$search_replace['/\[list=([\'\"]?)([^\"\']*)\\1](.*)\[\/list((=\\1[^\"\']*\\1])|(\]))/esiU'] = function($matches) {return formatlist($matches[3],$matches[2]);};
$search_replace['/\[list](.*)\[\/list\]/siU'] = function($matches) {return formatlist($matches[1]);};
                
  $searcharray[]="/\[img]([^\"]*)\[\/img\]/siU";    
  $replacearray[]="<img src=\"\\1\" border=0>";
  
  $threeparams = "/\[%s=(['\"]?)([^\"']*),([^\"']*)\\1](.*)\[\/%s\]/siU";
  $twoparams = "/\[%s=(['\"]?)([^\"']*)\\1](.*)\[\/%s\]/siU";
  $oneparam = "/\[%s](.*)\[\/%s\]/siU";

  $result = $db_zugriff->query("SELECT bbcodetag,bbcodereplace,params FROM bb".$n."_bbcode");

  while($row = $db_zugriff->fetch_array($result)) {
   if($row['params']==0) continue;
   if($row['params']==1) $search = sprintf($oneparam, $row['bbcodetag'], $row['bbcodetag']);
   if($row['params']==2) $search = sprintf($twoparams, $row['bbcodetag'], $row['bbcodetag']);
   if($row['params']==3) $search = sprintf($threeparams, $row['bbcodetag'], $row['bbcodetag']);

    for($i=0;$i<7;$i++) { // Verschachtelungstiefe
   $searcharray[] = $search;
   $replacearray[] = $row['bbcodereplace']; }
  }
}

if ($phpversionnum<"4.0.5") $bbcode=str_replace("'", "\'", $out);
$out = preg_replace_callback_array($search_replace, $out);
$out = preg_replace($searcharray, $replacearray, $out);
$out = str_replace("\\'", "'", $out);
return $out;
}

Scheint zu funktioniert. :)
Vielen dank für deine Hilfe!
11.04.2017 20:44
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste