Seite 1 von 1

Akronym Test

Verfasst: So 23.Jan, 2005 11:55
von modbo
MOD (alles groß)

mod (alles klein)

Mod (groß/klein)

Verfasst: So 23.Jan, 2005 12:24
von AmigaLink
^^ Interessantes phänomen nicht war!?
(Bei mir im Board passiert das nicht.)

Verfasst: So 23.Jan, 2005 15:13
von modbo
;) Normal

nur bevor ich es in meiner bbcode.php wollte ich testen, was bei raus kommt ;)

Es ist die Erweiterung von Oxpus:
oxpus hat geschrieben:Das Feld ist in der Datenbank sicherlich ein Index und die Datenbank prüft dann unabhängig der Groß-/Kleinschreibung. Somit führt das zu einem Fehler.
Wenn man allerdings in die Ersetzen-Funktion ein "i" als Indikator einbaut, werden die Suchmuster unabhängig der Groß-/Kleinschriebung gesucht:

Code: Alles auswählen

#
#-----[ OPEN ]-----
#
includes/bbcode.php

#
#-----[ FIND ]-----
#
			$orig[] = '#\b(' . phpbb_preg_quote( $acronyms[$i]['acronym'], "/") . ')\b#';

#
#-----[ REPLACE WITH ]-----
#
			$orig[] = '#\b(' . phpbb_preg_quote( $acronyms[$i]['acronym'], "/") . ')\b#i';
Das Akronym wird so dargestellt, wie es im ACP definiert wurde. Finde ich gut.

Verfasst: So 23.Jan, 2005 17:14
von oxpus
Jo, und das ist nicht gut.

@AmigaLink
Wie schaut bei Dir die Acronym-Zeile in der bbcode.php aus?

Verfasst: So 23.Jan, 2005 22:55
von AmigaLink

Code: Alles auswählen

function acronym_pass($message)
{
	static $orig, $repl;

	if( !isset($orig) )
	{
		global $db, $board_config;
		$orig = $repl = array();

		$sql = 'SELECT * FROM ' . ACRONYMS_TABLE;
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't obtain acronyms data", "", __LINE__, __FILE__, $sql);
		}

		$acronyms = $db->sql_fetchrowset($result);

		if( count($acronyms) )
		{
			usort( $acronyms, 'acronym_sort' );
		}

		for ($i = 0; $i < count($acronyms); $i++)
		{
			$orig[] = '#\b(' . phpbb_preg_quote( $acronyms[$i]['acronym'], "/") . ')\b#';
			//$orig[] = "/(?<=.\W|\W.|^\W)" . phpbb_preg_quote($acronyms[$i]['acronym'], "/") . "(?=.\W|\W.|\W$)/";
			$repl[] = '<acronym title="' . $acronyms[$i]['description'] . '">' . $acronyms[$i]['acronym'] . '</acronym>'; ;
		}
	}

	if( count( $orig ) )
	{
		$segments = preg_split( '#(<acronym.+?>.+?</acronym>|<.+?>)#s' , $message, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

		$message = '';

		foreach( $segments as $seg )
		{
			if( $seg[0] != '<' && $seg[0] != '[' )
			{
				$message .= str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "preg_replace(\$orig, \$repl, '\\0')", '>' . $seg . '<'), 1, -1));
			}
			else
			{
				$message .= $seg;
			}
		}
	}

	return $message;
}

Verfasst: Mo 24.Jan, 2005 18:57
von oxpus
Hm, okay, lass ich es eben wieder Original. Dann werden eben nur die Wörter genau so ersetzt, wie sie im ACP hinterlegt sind.

Verfasst: Mo 24.Jan, 2005 20:50
von AmigaLink
Richtig und für meine zwecke wichtig! :)
Ich hab mich immer gewundert warum die Akronyme bei dir anders dargestellt werden, aber nie nachgefragt weil es für mich eh uninteressant ist. ;)

Verfasst: Mo 24.Jan, 2005 21:52
von oxpus
Ich hatte das mal so eingestellt, daß Groß-/Kleinschreibung nicht berücksicht werden. Nachteil: Die Wörter werden dann immer ersetzt. Nun, so ist es doch besser.

Verfasst: Mo 24.Jan, 2005 22:11
von modbo
Mmmh. Na so scheiden sich die Geister ;)

Ich finde es besser, wenn sie so dargestellt werden, wie sie im ACP stehen.

ACK oder ACP schreibt normal keiner klein. Wenn doch, wird es automatisch ersetzt :)

OK, bei html oder php ist das wieder etwas anderes :D

Verfasst: Mo 24.Jan, 2005 22:56
von oxpus
Oder Mod, SQL, etc...
Besser so wie jetzt, also den ACP-Wert treffen.