Seite 1 von 1

BUG bei Linksetzung: Umlaute u. Sonderzeichen

Verfasst: 14.01.2013 23:31
von Talk19zehn
Hi, bezugnehmend auf jene Thematik
viewtopic.php?p=1292844#p1292844
ff
viewtopic.php?p=1292904#p1292904

interessiert mich der Entwicklungsstand u.a auch hinsichtlich der Anwendung des BBCode URL als auch einer direkten Linksetzung.

Leider finde ich kein passendes Thema auf phpBB.com oder habe fehlerhafte Suchbegriffe genutzt. Kann eurerseits weitergeholfen werden oder gibt´s Insider, die näheres Wissen
weitergeben könn(t)en und woll(t)en? :wink: Dafür danke ich.

Beste Grüße

Re: BUG bei Linksetzung: Umlaute u. Sonderzeichen

Verfasst: 15.01.2013 00:01
von Miriam
Du mußt die function get_preg_expression() in der includes/functions.php etwas "aufbohren"

aus:

Code: Alles auswählen

        case 'url_inline':
            $inline = ($mode == 'url') ? ')' : '';
            $scheme = ($mode == 'url') ? '[a-z\d+\-.]' : '[a-z\d+]'; // avoid automatic parsing of "word" in "last word.http://..."
            // generated with regex generation file in the develop folder
            return "[a-z]$scheme*:/{2}(?:(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+|[0-9.]+|\[[a-z0-9.]+:[a-z0-9.]+:[a-z0-9.:]+\])(?::\d*)?(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
        break; 
wird:

Code: Alles auswählen

        case 'url_inline':
            $inline = ($mode == 'url') ? ')' : '';
            $scheme = ($mode == 'url') ? '[a-zßäöü\d+\-.]' : '[a-zßäöü\d+]'; // avoid automatic parsing of "word" in "last word.http://..."
            // generated with regex generation file in the develop folder
            return "[a-z]$scheme*:/{2}(?:(?:[a-zßäöü0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+|[0-9.]+|\[[a-zßäöü0-9.]+:[a-zßäöü0-9.]+:[a-zßäöü0-9.:]+\])(?::\d*)?(?:/(?:[a-zßäöü0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-zßäöü0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-zßäöü0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
        break; 
Dasselbe gilt für die anderen URL Pregmatches.

Die Datei muß aber UTF-8 ohne BOM kodiert gespeichert werden.

Re: BUG bei Linksetzung: Umlaute u. Sonderzeichen

Verfasst: 15.01.2013 10:46
von nickvergessen
Das sollte unter anderem mit der neuen BBCode Engine gelöst werden:
https://area51.phpbb.com/phpBB/viewtopi ... 08&t=33021

Re: BUG bei Linksetzung: Umlaute u. Sonderzeichen

Verfasst: 16.01.2013 20:29
von DetlefT
Hallo,

Miriam, erstmal danke für Deine "kleine" Lösung. :) Klappt mit den deutschen Umlauten wunderbar.

Ich habe in der includes/functions.php jetzt jedes Vorkommen von [a-z0-9 mit [a-zßäöü0-9 ersetzt; ich hoffe, damit habe ich alle Deine "URL Pregmatches" erschlagen.

Nun gibt es ja aber noch weitere Sonderzeichen, die je nach Link zu ersetzen wären, z.B.

Code: Alles auswählen

http://www.åmål.se/ das wäre konvertiert: http://www.xn--ml-xiab.se/
(Vorschlag von @Talk19zehn).
Sonderzeichen:

Code: Alles auswählen

á à ă â å ä ã ą ā æ ć ĉ č ċ ç ď đ é è ĕ ê ě ë ė ę ē ğ ĝ ġ ģ ĥ ħ í ì ĭ î ï ĩ į ī ı ĵ ķ ĺ ľ ļ ł ń ň ñ ņ ŋ ó ò ŏ ô ö ő õ ø ō œ ĸ ŕ ř ŗ ś ŝ š ş ß ť ţ ŧ ú ù ŭ û ů ü ű ũ ų ū ŵ ý ŷ ÿ ź ž ż ð þ
Unter http://phlymail.com/de/downloads/idna-convert.html gibt es eine Klasse Net_IDNA - IDNA-Converter in PHP, die unter der LGPL (GNU Lesser General Public Licence) steht. Könnte nicht einer der Cracks hier mal eine Anleitung geben, wie man die Klasse in phpBB integriert? Würde unsere Forensoftware doch sicher erheblich aufwerten.

Durch diese Klasse kann man jede URL durchjagen, man erhält immer ein Ergebnis zurück, wenn keine Sonderzeichen vorhanden sind, dann eben unverändert. Die Klasse wandelt auch Parameter korrekt um (was der Konverter beim Denic z.B. nicht kann).

Re: BUG bei Linksetzung: Umlaute u. Sonderzeichen

Verfasst: 18.01.2013 18:28
von zx9r-treiber
Danke "Miriam"

Ich habe die Änderung nun auch so vorgenommen und es läuft nun wie gewünscht.