Seite 3 von 4
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 02.07.2012 20:07
von Perlchamp
@BNa,
ich habe keinerlei Puls. Alles im grünen Bereich.
Es eilt auch nicht.
Danke für Eure Mühe, dies live zu testen, super !
so long
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 02.07.2012 20:09
von Miriam
Die ganze Codegeschichte vorher von Würzi (?) hatte ich mir garnicht angeschaut. Das sollte eher was Eigenständiges (also ohne den anderen Code) werden.
Der von mir gepostete Codeansatz kümmert sich auch NUR um das erste Zeichen im Text und auch nur um die dt. Umlaute... Das könnte also alles noch etwas erweitert werden. War ja nur als Idee gedacht.
Wenn Du auch noch die Sache mit BBCode oder anderen Sonderzeichen vor "regulären" Buchstaben abdecken möchtest, mußt Du etwas tiefer in die Materie abtauchen:
Abriß der Möglichkeiten, ein Posting anzufangen:
¿Holla Welt?
[u]Hallo Welt[/u]
[size=150]Hallo Welt[/size]
[url=
viewtopic.php?f=88&t=222018]hallo welt[/url]
[quote="miriam"]Hallo Welt[/quote]
:grin: Hallo Welt
:geek: :lol: Hallo Welt
Wo soll das enden?.. Und dann kommst Du um "RegExen" nicht herum.
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 02.07.2012 20:19
von Perlchamp
@Miri(am):
mich beschleicht manchmal das Gefühl, dass du nicht immer alle Beiträge (richtig) liest:
ich hatte geschrieben:
[...] Dies sollte mit RegExen zu lösen sein, aber ich kenne mich diesbezüglich noch gar nicht aus.
... da wird es sich meiner Meinung nach in erster Linie um HTML-Code handeln, also <b>...</b> anstelle von
, oder? Die Variable
sollte zu diesem Augenblick bereits in HTML vorliegen, bin mir aber nicht sicher !
Die ganze Codegeschichte vorher von Würzi (?) hatte ich mir garnicht angeschaut. [...]
... dies hatte ich bereits bei deinem ersten Beitrag bemerkt (als du mit einem Beispielsatz angefangen hast - war trotzdem hilfreich, obwohl dies schon alles vorhanden war im Original) ...
Miri(am) schrieb:
Hallo Welt
... oder
Ich bleibe weiterhin am Ball - vielleicht geht bei mir dann die Sonne auf, mal sehen ...
Danke weiterhin für deine Hilfe !
so long
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 26.07.2012 13:49
von Perlchamp
@BNa:
Hi, ich wollte mal nachfragen, was bei deinen Tests herausgekommen ist.
Ich habe bisher noch keine Lösung gefunden.
so long
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 27.07.2012 10:50
von BNa
Perlchamp hat geschrieben:Ich habe bisher noch keine Lösung gefunden.
Für was denn eigentlich nochmal?
Die Umlaute sollten ja geklärt sein, oder?
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 27.07.2012 11:16
von Perlchamp
@BNa,
habe ich etwas übersehen ?
nein, es geht mir um die Umlaute, BNa. Hattest du dafür bereits eine Lösung gefunden ?
so long
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 27.07.2012 11:55
von BNa
Erstelle drei neue *.gif > ae.gif, oe.gif, ue.gif. Dann nehme folgende Änderung am Original Code vor:
Finde
Code: Alles auswählen
$first_letter = substr(($message), 0, 1);
$rest_text = substr(($message), 1, $letter_count);
$letter_image = strtolower ($first_letter);
$letter_path = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';
if (preg_match('/^[a-zA-Z]/', $first_letter))
{
$first_letter = '<img src="' . $letter_path . $letter_image . '.gif" alt="' . $first_letter . '" /> ';
}
Ersetze mit
Code: Alles auswählen
$first_letter = mb_substr(($message), 0, 1);
$rest_text = mb_substr(($message), 1, $letter_count);
$letter_image = strtolower ($first_letter);
$letter_path = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';
$letter_image = str_replace(array('Ä','Ö','Ü','ä','ö','ü'), array('ae','oe','ue','ae','oe','ue'), $letter_image);
$first_letter = '<img src="' . $letter_path . $letter_image . '.gif" alt="' . $first_letter . '" /> ';
Dieser Code ist getestet.
Das Problem war der fehlende Multibyte Support von
substr()
und das
preg_match()
was nur Nicht Umlaute zuliess.
Der Rest war dann ein schlichtes
str_replace()
für die Umwandlung.
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 27.07.2012 12:03
von Perlchamp
@BNa,
ein fettes "Merci" - auf dich kann man sich wirklich verlassen - Danke !
so long
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 27.07.2012 12:51
von Perlchamp
@BNa,
da ich beim Überprüfen einen Fehler entdeckt habe, möchte ich hier nun meine vorläufige "Endlösung" vorstellen.
Code: Alles auswählen
// [+] #22 PHPBB-MOD Image First Postletters #2.0.0
// Image First Postletter Begin
if ($user->data['user_first_letter'])
{
// [+] CODG-Modifikation #1 (@Miriam): trimmen
$message = ltrim($message);
// [-] CODG-Modifikation #1 (@Miriam): trimmen
$letter_count = (strlen($message));
$letter_count = $letter_count -1;
// [+] CODG-Modifikation #2 (@BNa): Multibyte-Support
$first_letter = mb_substr(($message), 0, 1);
$rest_text = mb_substr(($message), 1, $letter_count);
// [-] CODG-Modifikation #2 (@BNa): Multibyte-Support
$letter_image = strtolower ($first_letter);
$letter_path = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';
// [+] CODG-Modifikation #3a: BBCode ausschliessen
if (preg_match('/^[a-zA-ZäöüÄÖÜ]/', $first_letter))
{
// [-] CODG-Modifikation #3a: BBCode ausschliessen
// [+] CODG-Modifikation #4 (@BNa): Umlaute verarbeiten
$letter_image = str_replace(array('Ä','Ö','Ü','ä','ö','ü'), array('ae','oe','ue','ae','oe','ue'), $letter_image);
// [-] CODG-Modifikation #4 (@BNa): Umlaute verarbeiten
$first_letter = '<img src="' . $letter_path . $letter_image . '.gif" alt="' . $first_letter . '" /> ';
$message = $first_letter . $rest_text;
// [+] CODG-Modifikation #3b: BBCode ausschliessen
}
// [-] CODG-Modifikation #3b: BBCode ausschliessen
}
// Image First Postletter End
// [-] #22 PHPBB-MOD Image First Postletters #2.0.0
das Problem nach BNa's Beitrag ist, dass z.B. BBCode als "einseitiger" HTML-Tag ausgegeben wurde. Durch das Filtern mittels "preg_match" (man kann auch andere Filter benutzen) werden also nur Buchstaben geändert, und BBCode dadurch übergangen.
Bna, dies kannst du einfach testen, indem du den ersten Buchstaben eines Beitrags mittels BBCode z.B. fett formatierst.
In diesem Sinne ...
so long
Re: [BETA] Image First Postletters 2.0.0
Verfasst: 27.07.2012 14:34
von BNa
Wenn Du mir dieses "BBCode Problem" vorher geschildert hättest, hätte ich es berücksichtigen können.
Bin ja kein Gedankenleser, weil:
Perlchamp hat geschrieben:nein, es geht mir um die Umlaute, BNa.
Von BBCodes war keine Rede.
Dann also mal die komplette Lösung, ohne github Syntax.
Erstelle drei neue *.gif > ae.gif, oe.gif, ue.gif. Dann nehme folgende Änderung am Original Code vor:
Finde
Code: Alles auswählen
$first_letter = substr(($message), 0, 1);
$rest_text = substr(($message), 1, $letter_count);
$letter_image = strtolower ($first_letter);
$letter_path = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';
if (preg_match('/^[a-zA-Z]/', $first_letter))
{
$first_letter = '<img src="' . $letter_path . $letter_image . '.gif" alt="' . $first_letter . '" /> ';
}
Ersetze mit
Code: Alles auswählen
$first_letter = mb_substr(($message), 0, 1);
$rest_text = mb_substr(($message), 1, $letter_count);
$letter_image = strtolower ($first_letter);
$letter_path = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';
if (preg_match('/^[a-zA-ZäöüÄÖÜ]/', $first_letter))
{
$letter_image = str_replace(array('Ä','Ö','Ü','ä','ö','ü'), array('ae','oe','ue','ae','oe','ue'), $letter_image);
$first_letter = '<img src="' . $letter_path . $letter_image . '.gif" alt="' . $first_letter . '" /> ';
}