LordHexa Geschrieben 22. Juni 2005 Teilen Geschrieben 22. Juni 2005 Hallo zusammen, ich hab mir eine Funktion gebaut, mit deren Hilfe ich Nicht-IDN-Konforme Domains umkonvertiere. Nun brauche ich jedoch genau den umgekehrten Weg. Hier die Funktion <?php $charset = "ISO-8859-1"; $domain_liste = split("\n",$liste); foreach($domain_liste as $domain){ $domain = idn_to_ascii($domain, $charset); echo $domain; echo "<br>"; } ?> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 22. Juni 2005 Teilen Geschrieben 22. Juni 2005 punycode/Unicode und umgekehrt converter IDNA Convert s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordHexa Geschrieben 23. Juni 2005 Autor Teilen Geschrieben 23. Juni 2005 Hat mir irgendwie nicht viel geholfen Also, das Problem ist : Ich lese das HTML-File ein und will nun den zu encodierenden Pattern zwischen $Anfang(">http://") und $Ende("</a>") suchen lassen und diesen eben mit $Pattern = utf8_encode($Pattern); encodieren. Da es sich jedoch um viele solcher Pattern handelt und auch ständig welche hinzukommen, stehe ich vor einem Prob. Hinzu kommt, das mein Urlaub davon abhängt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordHexa Geschrieben 23. Juni 2005 Autor Teilen Geschrieben 23. Juni 2005 Also, ich hab mir da jetzt mal was gebastelt, aber das ist keine optimale Lösung. <?php $html = '<A HREF="http://xn--gnstige-aluminiumfelgen-cpc.de/">http://xn--gnstige-aluminiumfelgen-cpc.de/</A></FONT><A HREF="http://www.google.de/">http://www.google.de/</A></FONT>'; preg_match_all("|<A.*?>http://(.*?)</A>|i", $html, $treffer, PREG_PATTERN_ORDER); print_r($treffer); ?> [/PHP] Das Problem ist, ich kann $home nicht "so" einsetzen wie im Beispiel, da ständig Domains hinzukommen, bzw. wegfallen. Bräuchte also ne Art Wildcard die sagt : Wenn zwischen >http://(.*?)</A> die Zeichenfolge xn-- kommt, dann nimm alles was zischen >http:// und </A> steht, mach was tolles und dann tust du das ganze wieder in den String, damit ich die HTML-Datei wieder komplett angezeigt bekomme. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordHexa Geschrieben 23. Juni 2005 Autor Teilen Geschrieben 23. Juni 2005 Ok, hab jetzt soweit alles. Das einzige, winzige Problem ist, das ich mit folgendem Code keines Matches bekomme, sprich : Er nix decodiert. ....................... while (!feof($fp)) { $line = fgets($fp); if (preg_match('/^(<+.*>http:\/\/+)(.*)(\/<\/A.*)/',$line,$matches) ) { $matches[2] = utf8_encode($matches[2]); $line = $matches[1].$matches[2].$matches[3]; } echo "\n\n$line"; } ................................ [/PHP] _________________ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 23. Juni 2005 Teilen Geschrieben 23. Juni 2005 /^(<+.*>http:\/\/+)(.*)(\/<\/A.*)/ Mal ein paar Anmerkungen zum regulären Ausdruck: ^: Steht der Link am Anfang der Zeile? <+.*> Können auch mehrere Links pro Zeile bestehen? Sonst hast Du nämlich ein Problem, dass diese mit in das <+.*> reinpassen, und nur der letzte genommen wird <\/A.*) Ist das A in den Files zwingend groß geschrieben? Ich bin mal so frei, und versuche ein wenig zu optimieren: /(<[^>]*>http:\/\/)(.*?)(\/<\/a>)/is Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordHexa Geschrieben 23. Juni 2005 Autor Teilen Geschrieben 23. Juni 2005 Ok, ich schreib jetzt einfach mal, wie es funktioniert.... .............................. $charset = "ISO-8859-1"; while (!feof($fp)) { $line = fgets($fp); if (preg_match('/^(<+.*>http:\/\/+)(.*)(\/<\/A.*)/',$line,$matches) ) { $matches[2] = idn_to_unicode($matches[2], $charset); $line = $matches[1].$matches[2].$matches[3]; } echo "\n\n$line"; } .............................. [/PHP] Wichtig : IDN-PHP Modul muss auf dem Server installiert sein! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.