PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aufräumen - BB-Code aus Beiträgen entfernen !?


redlabour
22.02.2006, 21:03
Hi,

wie kann ich in jedem Posting und in jedem Forum alle verlinkten Pics die mit IMG eingebunden sind und nicht als Anhänge mit einer SQL Abfrage aus den Postings entfernen ?

Natürlich auch die dazwischen geposteten URL´s zum Pic.

Müsste ja dann auch simpel auf alle anderen Beiträge in anderen BB Code´s umzusetzen sein.

Jemand eine Idee ?

redlabour
24.02.2006, 08:34
Keiner eine Idee ? Wäre mir echt wichtig da ich die Gallerie am Wochenende wechseln möchte und ein Import der alten Pfade und Pics nicht möglich ist.

pogo
24.02.2006, 11:42
Test mal dieses Skript.

Da es die post Tabelle verändert, MUSST du vorher ein Backup der post Tabelle anlegen.

Es gibt keine Gewähr für eine korrekte Funktion, die nur das Gewollte löscht!
Zum Testen hatte ich nur eine klitzekleine DB zur Verfügung.

Entfernt werden img Tags inkl. der URLs, sowie als Beispiel auch b, u und i Tags.

Das Skript muss ins admincp Verzeichnis kopiert werden.

redlabour
25.02.2006, 07:52
Danke Pogo ich teste es heute Abend. :)

By the Way - meine Mailbenachrichtigungen funktionieren bei Euch seit Monaten nicht mehr. :confused:

redlabour
01.03.2006, 23:25
Hi Pogo, ich konnte es noch nicht testen - ich sag aber noch Bescheid.

Dazu noch eine Bitte - kann man das Skript so modifizieren das anstelle des gelöschten TAGS und der URL ein Text steht wie :

Hier war ein Bild eingebunden das wegen einer neuen Galleriesoftware entfernt werden musste - gez. der Admin

oder ähnliches (natürlich in Bold) ?

Oder fällt Dir vielleicht noch was ein wie ich bei allen IMG Tags den Pfad einfach nur ändern kann, zum Beispiel :

http://www.DOMAIN.de/coppermine/BILD.jpg
zu
http://www.DOMAIN.de/gallery2/BILD.jpg

?

Mystics
03.03.2006, 08:58
Ersetze:$text = preg_replace('#\[img\]\s*(https?://([^<>*"?&]+|[a-z0-9/\\._\- !]+))\[/img\]#iUe', '', $text);mit:$text = preg_replace('#\[img\]\s*(https?://([^<>*"?&]+|[a-z0-9/\\._\- !]+))\[/img\]#iUe', 'Hier war ein Bild eingebunden, das wegen einer neuen Galleriesoftware entfernt werden musste - gez. der Admin', $text);Die Zeile danach musst du dann eins nach oben schieben, da ansonsten das [/B] wieder entfernt werden würde - oder du löscht sie ganz, war ja nur als Beispiel gedacht.Oder fällt Dir vielleicht noch was ein wie ich bei allen IMG Tags den Pfad einfach nur ändern kann, zum Beispiel UPDATE post SET pagetext = REPLACE(pagetext, 'www.DOMAIN.de/coppermine/', 'www.DOMAIN.de/gallery2/');

Wie immer: Backup machen nicht vergessen.

redlabour
03.03.2006, 13:49
Perfect !!!! :)

BTW - bitte mal prüfen. Ich habe schon wieder keine Mailbenachrichtigung bekommen.

redlabour
03.03.2006, 23:40
Ersetze:$text = preg_replace('#\[img\]\s*(https?://([^<>*"?&]+|[a-z0-9/\\._\- !]+))\[/img\]#iUe', '', $text);mit:$text = preg_replace('#\[img\]\s*(https?://([^<>*"?&]+|[a-z0-9/\\._\- !]+))\[/img\]#iUe', 'Hier war ein Bild eingebunden, das wegen einer neuen Galleriesoftware entfernt werden musste - gez. der Admin', $text);

Ist das "https" eigentlich Absicht oder muss es http heissen ?

StGaensler
04.03.2006, 01:11
Hinter dem "s" steht ein Fragezeichen, das heist hier im Regex-Ausdruck so viel wie: Das "s" kann einmal oder keinmal vorkommen. Somit gilt der Ausdruck sowohl für Bilder, deren URL mit http:// beginnt, als auch für Bilder, deren URL mit https:// beginnt.

Viele Grüße,
Stefan

redlabour
04.03.2006, 07:50
Vielen Dank somit auch Dir ! :)

redlabour
07.03.2006, 00:09
Hi, das Skript funktioniert nicht.

Obwohl ich die beiden Stellen mit der Tabelle "post" um "vb3_post" ergänzt habe immer noch :

Datenbankfehler in vBulletin 3.5.4:

Invalid SQL:
SELECT postid, pagetext FROM post;

MySQL-Fehler : Table 'usrdb_poltbofu.post' doesn't exist
Fehler-Nr. : 1146
Datum : Tuesday, March 7th 2006 @ 12:07:42 AM
Skript : http://www.politikstube.de/forum/admincp/removethisnthat.php
Referrer :
IP-Adresse : xxxxxxxxxxxxxxxxxx
Benutzername : xxxxxxxxxxxxxxxxxxxxx
Klassenname : vb_database

pogo
07.03.2006, 13:35
Wenn deine Datenbank usrdb_poltbofu heißt, hast du das geänderte Skript nicht hochgeladen. Von einem Präfix ist ja nichts zu sehen...

redlabour
07.03.2006, 13:43
Yooo shit, und ich habe es gestern zig mal Filezilla drübergehauen.

Jetzt nochmal per webftp und es funzt !!! SUPPPEEERRR !!! :-)

Mein ewiger Dank gebührt Pogo ! ;)

Paridus
21.03.2006, 18:45
mal eine kurze frage dazu.

ich habe nun den code entfernt, jetzt möchte ich nin meiner daten bank alle vokommen [zitat] und gegen [qoute] austauschen. wie kann ich es am einfachsten machen?

redlabour
21.03.2006, 18:57
????

Im nachhinein gar nicht mehr.

Paridus
21.03.2006, 19:16
????

Im nachhinein gar nicht mehr.

wieso, klar müsste das gehen ...

vieleicht so:

UPDATE post SET pagetext = REPLACE(pagetext, '[zitat]', '[quote]'); ?

StGaensler
21.03.2006, 21:57
Genau. Ich würde
UPDATE post SET pagetext = REPLACE(pagetext, '[zitat', '', '');
vorschlagen. Ich weiß ja nicht, ob der [zitat]-code auch eine Option zulässt.

redlabour
21.03.2006, 23:27
@Paridus - vielleicht solltest Du demnächst statt entfernen das Wörtchen deaktivieren benutzen ! ;)

Etwas was Du entfernt hast kannst Du logischerweise nicht mehr ersetzen ! ;)

redlabour
10.10.2006, 15:19
Shit - wollte das Skript heute wieder verwenden und nun bei vB 3.6.2 :

Parse error: syntax error, unexpected '[' in /poltbofu/www.politikstube.de/forum/admincp/removethisnthat.php(15) : regexp code on line 1

Fatal error: preg_replace(): Failed evaluating code: Hier war ein Bild eingebunden, das wegen einer neuen Galleriesoftware entfernt werden musste - gez. der Admin in /poltbofu/www.politikstube.de/forum/admincp/removethisnthat.php on line 15

<?php
if (function_exists("set_time_limit")==1 and get_cfg_var("safe_mode")==0) {
@set_time_limit(1200);
}
// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// ########################## REQUIRE BACK-END ############################
require_once('./global.php');

print_cp_header('Dies und das entfernen');

function removethisnthat($text)
{
$text = preg_replace('#\[img\]\s*(https?://([^<>*"?&]+|[a-z0-9/\\._\- !]+))\[/img\]#iUe', 'Hier war ein Bild eingebunden, das wegen einer neuen Galleriesoftware entfernt werden musste - gez. der Admin', $text);

return $text;
}

echo "Auf gehts Jungs, YEEHAA!\n\n<br><br>";
$i=0;
$posts=$db->query("SELECT postid, pagetext FROM vb3_post");

while($thispost=$db->fetch_array($posts)) {
$fixed = removethisnthat($thispost['pagetext']);
#$fixed = $thispost['pagetext'];

$db->query("UPDATE vb3_post SET pagetext='".addslashes($fixed)."' WHERE postid=$thispost[postid]");
//echo "$thispost[postid] bearbeitet.<br>\n";
$i++;
if (($i%100)==0) {echo "$i Beiträge bearbeitet...\n<br>";} else {echo '.';}
}

echo "<br /><br />Alles erledigt....es wurden $i Beiträge bearbeitet....ewige Dankbarkeit gebührt pogo ;)";
echo '<br /><br /><a href="misc.php?do=buildpostcache&perpage=1000"><b>Der Beitrags-Cache MUSS jetzt neu erstellt werden. Bitte hier klicken!</b></a>';

print_cp_footer();
?>

pogo
10.10.2006, 16:26
Hmm bei mir funktioniert das aber...komisch.

redlabour
10.10.2006, 16:31
Also ohne die Texteinfügung hat es jetzt auch geklappt. :(