Seite 1 von 1

Quotes aus Search Result entfernen

Verfasst: 15.06.2007 23:40
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

Verfasst: 16.06.2007 17:10
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