Seite 1 von 2

Mod Ausrufezeichen in der Nachricht, brauche hilfe

Verfasst: 17.11.2005 13:42
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 :)

Verfasst: 17.11.2005 15:11
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? ;)

Verfasst: 17.11.2005 15:49
von Tannizicke
So schlau war ich auch schon.. :grin:

wenn ich aus der 1 eine 3 mache, sind gar keine Satzzeichen mehr da.

Verfasst: 17.11.2005 19:09
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);
}
}


Verfasst: 17.11.2005 22:21
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

Verfasst: 18.11.2005 00:18
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

Verfasst: 18.11.2005 14:13
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 ?

Verfasst: 18.11.2005 16:52
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

Verfasst: 19.11.2005 15:30
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:

Verfasst: 09.06.2006 12:29
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?