Quotes aus Search Result entfernen

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Chellie
Mitglied
Beiträge: 33
Registriert: 05.07.2002 15:52
Wohnort: Rossau

Quotes aus Search Result entfernen

Beitrag von Chellie »

Hallo

Ich versuche gerade aus einer Postliste (Zeige alle Posts des Users -> Profil) sämtliche Quotes zu entfernen. Hierzu hab ich zum Test folgendes Script angelegt um das erstmal bissel zu simulieren:

Code: Alles auswählen

<?php
$mes2='A[quote:953df130c8]T1[quote:953df130c2="TEST"]T2'.
'[quote:953df130c8]T3[/quote:953df130c8]T4[/quote:953df130c2]T5'.
'[/quote:953df130c8]B[quote:953df130c8]T6[/quote:953df130c8]C'.
'[quote:953df130c8]T7[/quote:953df130c8]D';
$mes2 = preg_replace("/\[quote:.*?\].*?\[\/quote:.*?\]/si", '', $mes2);
echo $mes2; 
?>
Nun komme ich mit der Verschachtelung nicht weiter. Eigentlich will ich erreichen das "ABCD" ausgegeben wird jedoch bleibt noch einiges anderes stehen.
Mir ist auch klar wieso und um ehrlich zu sein glaub ich nicht so recht, dass das mit einem preg_replace durchlauf machbar ist (zumindes fällt mir da nix ein).
Deshalb hätte mir auch ein Erfolg in mehrere Durchgänge gereicht aber ich schaffe es einfach nicht, dass die Expression in einem Durchgang nur die Tiefste Quote-Ebene rausschneidet.

Hat da vielleicht jemand eine Idee?

Schonmal Danke

Chellie
Visit PC Player forever on http://www.pcplayer.de
Chellie
Mitglied
Beiträge: 33
Registriert: 05.07.2002 15:52
Wohnort: Rossau

Beitrag von Chellie »

So mit preg_replace hab ich es nicht hinbekommen aber ich hab mir da was gebaut was wohl funktioniert.

Für alle die es interessiert:

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
search.php

#
#-----[ FIND ]------------------------------------------
#

//
// If the board has HTML off but the post has HTML
// on then we process it, else leave it alone
//
if ( $return_chars != -1 )
{
	$message = strip_tags($message);

#
#-----[ AFTER, ADD ]------------------------------------------
#

$startquotesplit = split("\[quote:",$message);
if(is_array($startquotesplit) && count($startquotesplit) > 0) {
	$erg=array();
	$ergebnis = "";
	$i_i = 0;
	foreach($startquotesplit as $value) {
		if($i_i==0) {
			$ergebnis = $ergebnis.$value;
			$i_i=1;
			continue;
		}
		$value = "[quote:".$value;
		$tmp=split("\[\/quote:",$value);
		if(is_array($tmp) && count($tmp) > 0) {
			foreach($tmp as $value2) {
				if(strcmp(substr($value2,0,7),"[quote:")!=0) {
					$value2 = "[/quote:".$value2;
				}
				array_push($erg,$value2);
			}
		}
	}

	if(is_array($erg) && count($erg) > 0) {
		$merk = "";
		$i_i=0;
		foreach($erg as $value) {
			$i_i++;
			if(strcmp(substr($value,0,7),"[quote:")==0) {
				$merk = "[quote:";
				continue;
			} else {
				if(strcmp($merk,"[quote:")==0 && (count($erg) == $i_i ||
					 strcmp(substr($erg[$i_i],0,7),"[quote:")==0)) {
					$ergebnis = $ergebnis.$value;
					$merk = "[/quote:";
				}
			}
		}
	}
	$message = trim($ergebnis);
	if ( $message) == '' )  $message =  '(Empty post)';
}
Das es immer und überall funktioniert kann ich nicht garantieren aber eigentlich ... hoffe ich es.


cu
Chellie
Visit PC Player forever on http://www.pcplayer.de
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“