Mod Ausrufezeichen in der Nachricht, brauche hilfe

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
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.
Tannizicke
Mitglied
Beiträge: 8
Registriert: 08.02.2004 20:42

Mod Ausrufezeichen in der Nachricht, brauche hilfe

Beitrag von Tannizicke »

Hallo,

ich habe den Mod Ausrufezeichen in der Nachricht und den Mod ausrufezeichen im Titel installiert.

Dieser bewirkt ja, das zuviele !?. ersetzt werden. Ich habe noch das "Komma" hinzugefügt.

Nun möchte ich aber gerne, das alle diese Zeichen nicht nur durch jeweils ein zeichen ersetzt werden, sondern durch drei.

Könnt ihr mir da helfen ?

Hier der Code von dem Mod. Was muss ich da noch einfügen. Ich habe schon ein wenig probiert, nur leider sind meine php Kenntnisse 6 - 7.



includes/funktions_post.php

//
// Ausrufezeichen in der Nachricht
//
if (preg_match("/([\!\?\.\,])+/", $message))
{
$message_array = preg_split("/\n/", $message);
for ($x = 0; $x < count($message_array); $x++)
{
if (!preg_match("/\[.*\//", $message_array[$x])) // Alles mit BBCode in Ruhe lassen...
{
$message_array[$x] = preg_replace("/([\!])+/", "\\1", $message_array[$x]);
$message_array[$x] = preg_replace("/([\?])+/", "\\1", $message_array[$x]);
$message_array[$x] = preg_replace("/([\.])+/", "\\1", $message_array[$x]);
$message_array[$x] = preg_replace("/([\,])+/", "\\1", $message_array[$x]);
}
$message = implode("\n", $message_array);
}
}
Danke schon mal :)
spritzpistole
Mitglied
Beiträge: 1287
Registriert: 02.10.2004 00:25
Wohnort: Haßloch
Kontaktdaten:

Beitrag von spritzpistole »

Code: Alles auswählen

 $message_array[$x] = preg_replace("/([\!])+/", "\\1", $message_array[$x]);
$message_array[$x] = preg_replace("/([\?])+/", "\\1", $message_array[$x]);
$message_array[$x] = preg_replace("/([\.])+/", "\\1", $message_array[$x]);
$message_array[$x] = preg_replace("/([\,])+/", "\\1", $message_array[$x]); 
Ich kenn mich nicht aus, allerdings frag ich mich, ob du nicht einfach die 1 ändern musst? ;)
Tannizicke
Mitglied
Beiträge: 8
Registriert: 08.02.2004 20:42

Beitrag von Tannizicke »

So schlau war ich auch schon.. :grin:

wenn ich aus der 1 eine 3 mache, sind gar keine Satzzeichen mehr da.
Tannizicke
Mitglied
Beiträge: 8
Registriert: 08.02.2004 20:42

Beitrag von Tannizicke »

Ich habe die Lösung doch noch gefunden...



includes/funktions_post.php

//
// Ausrufezeichen in der Nachricht
//
if (preg_match("/([\!\?\.\,])+/", $message))
{
$message_array = preg_split("/\n/", $message);
for ($x = 0; $x < count($message_array); $x++)
{
if (!preg_match("/\[.*\//", $message_array[$x])) // Alles mit BBCode in Ruhe lassen...
{
$message_array[$x] = preg_replace("/([\!])+/", "\\!!!", $message_array[$x]);
$message_array[$x] = preg_replace("/([\?])+/", "\\???", $message_array[$x]);
$message_array[$x] = preg_replace("/([\.])+/", "\\...", $message_array[$x]);
$message_array[$x] = preg_replace("/([\,])+/", "\\,,,", $message_array[$x]);
}
$message = implode("\n", $message_array);
}
}

Benutzeravatar
Underhill
Mitglied
Beiträge: 1180
Registriert: 24.09.2003 11:40
Wohnort: 742 Evergreen Terrace

Beitrag von Underhill »

Hi,

korrekt...

Zur Frage:
preg_replace("/([\!])+/", "\\1", $message_array[$x]);
\\1 ist das erste Ergebnis der "expression" (vor dem ersten Komma)
\\2 waere das zweite - u.s.w.

Es existiert aber nur \\1

Siehe fuer weitere Tipps zum MOD auch:
http://www.underhill.de/downloads/phpbb ... ttipps.txt


Gruss
Underhill
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Tannizicke hat geschrieben:Ich habe die Lösung doch noch gefunden...

Versuchs mal so -->

Code: Alles auswählen

	if (preg_match("/([\!\?])+/", $message))
	{
		$message_array = preg_split("/\n/", $message);
		for ($x = 0; $x < count($message_array); $x++)
		{
			if (!preg_match("/\[.*\//", $message_array[$x])) // Alles mit BBCode in Ruhe lassen...
			{
				$message_array[$x] = preg_replace("/([\!]){4,}/", "\\!!!", $message_array[$x]);
				$message_array[$x] = preg_replace("/([\?]){4,}/", "\\???", $message_array[$x]);
				$message_array[$x] = preg_replace("/([\.]){4,}/", "\\...", $message_array[$x]);
				$message_array[$x] = preg_replace("/([\,]){4,}/", "\\,,,", $message_array[$x]);
			}
			$message = implode("\n", $message_array);
		}
	}
weils sonst hast du 3 Satzzeichen, wo vorher vielleicht nur
2 waren und das macht irgendwie keinen Sinn. easy
Tannizicke
Mitglied
Beiträge: 8
Registriert: 08.02.2004 20:42

Beitrag von Tannizicke »

easygo hat geschrieben:
{
$message_array[$x] = preg_replace("/([\!]){4,}/", "\\!!!", $message_array[$x]);

Das {4,} sagt also, ab 4 Satzzeichen soll ersetzt werden ? Hab ich das richtig verstanden ?
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Jo die 4 da vorm Komma steht fürs Minimum.

Heißt also, dass die Funktion immer erst ab 4 aufeinander
folgenden Satzzeichen desselben Typs greift.

Thx @ Underhill für den Hack btw. easy
Tannizicke
Mitglied
Beiträge: 8
Registriert: 08.02.2004 20:42

Beitrag von Tannizicke »

Ganz lieben dank...

Leider habe ich vergessen gehabt : und ; mit reinzunehmen... :roll: ...

Nun ja.. nun sind auch die begrenzt... Wollen so erwachsen sein und sind doch noch kleine Kinder :grin:
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag von bgx »

Hallo!

Ich würde das gerne mit a o u i usw machen, nur leider funktioniert das nicht wenn ich diese als Zeichen eintrage?

Was muß ich ändern?
Antworten

Zurück zu „phpBB 2.0: Mod Support“