Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Umgekehrte IDN-Konvertierung

Empfohlene Antworten

Veröffentlicht

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]

  • Autor

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 ;)

  • Autor

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.

  • Autor

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]

_________________

/^(<+.*>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

  • Autor

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!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.