Linuchs: PHP: Aus einem String ein mehrdimensionales Array machen

Moin,

eben gerade habe ich die Browser-Sprachangabe wie ru,en;q=0.9,es;q=0.8,de-at;q=0.7 recht umständlich zerlegt, um die Nationalsprachen zu sehen:

  1. Schritt explode wg. , (ergibt de-at;q=0.7)

  2. Schritt explode wg. ; (ergibt de-at)

  3. Schritt explode wg. - (ergibt de)

Auch bei CSV-Dateien:

  1. Schritt: explode wg. \n (Zeilen trennen)

  2. Schritt: explode wg. ; (Felder trennen)

PHP hat ja hunderte von verborgenen Schätzchen. Kann es aus einem String ein mehrdimensionale Arrays erzeugen?

Linuchs

  1. Tach!

    PHP hat ja hunderte von verborgenen Schätzchen. Kann es aus einem String ein mehrdimensionale Arrays erzeugen?

    Dazu fällt mir außer einer Zerlegung mit Regex nicht weiter ein. Aber zum CSV-Parsen gibt es jedenfalls fgetcsv() und str_getcsv().

    dedlfix.

    1. Hallo dedlfix,

      mit der Regex wird man aber eher unglücklich... Ein dreifach gestaffelter explode scheint mir nachvollziehbarer, wenn man kein geprüfter T-R(eg)?ex Dompteur ist.

      Rolf

      --
      sumpsi - posui - obstruxi
  2. Hi,

    könnte es sein, dass Du die beste Sprache aus dem Language String ermitteln möchtest?

    Siehe

    LG
    localhost

    1. Hallo localhorst,

      guter Plan. Das möchte er.

      Kleines Problem: Er möchte nicht aus allen verfügbaren Locales seines Systems wählen, sondern aus einer reduzierten Liste der von seiner Anwendung unterstützten Sprachen. Gibt's dafür auch was?

      Rolf

      --
      sumpsi - posui - obstruxi
      1. Hallo Rolf, Linuchs, ...

        guter Plan. Das möchte er.

        Kleines Problem: Er möchte nicht aus allen verfügbaren Locales seines Systems wählen, sondern aus einer reduzierten Liste der von seiner Anwendung unterstützten Sprachen. Gibt's dafür auch was?

        Zumindest haben schon Andere, und noch mehr darüber gegrübelt.

        Greets
        localhorst

    2. Hi localharst,

      dass Du die beste Sprache ...

      Ich biete meine Seiten in den Sprachen de, en und nl an.

      Ich gehe HTTP_ACCEPT_LANGUAGE durch. Die erste, die ich bieten kann, liefere ich aus.

      Bisher hatte ich nur die erste Sprache als einzige betrachtet. Ein japanischer (ja) Browser hat dann womöglich die Seiten in de bekommen, obwohl er auch english angibt.

      Siehe

      Das Beispiel in deinem Link

      $locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
      echo $locale;
      

      gibt diesen Fehler: Fatal error: Call to undefined function locale_accept_from_http() in /home/.../p510.php on line 10

      Meine PHP-Vers.=[5.6.40-0+deb8u1]

      Linuchs

      1. Hallo Linuchs,

        Meine PHP-Vers.=[5.6.40-0+deb8u1]

        https://www.heise.de/newsticker/meldung/PHP-5-6-wird-zum-Sicherheitsrisiko-4191009.html

        Bis demnächst
        Matthias

        --
        Du kannst das Projekt SELFHTML unterstützen,
        indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
      2. Hallo Linuchs,

        die Funktion ist Teil der intl Erweiterung, die musst Du ggf. aktivieren.

        https://www.php.net/manual/de/intl.installation.php

        Unter Windows musste ich nur eine Zeile in php.ini entkommentieren; keine Ahnung wie das unter Linuchs - äh - Linux geht.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Hallo

          die Funktion ist Teil der intl Erweiterung, die musst Du ggf. aktivieren.

          https://www.php.net/manual/de/intl.installation.php

          Unter Windows musste ich nur eine Zeile in php.ini entkommentieren; keine Ahnung wie das unter Linuchs - äh - Linux geht.

          Modul installieren, Eintrag zur Aktivierung in der php.ini und Neustart des Webservers.

          Davon abgesehen sind die Links in Hiesig-Horstens anderem Posting meiner Meinung nach zielführender. Der in diesem Ast verlinkten Funktion fehlt der Abgleich der vom Browser akzeptierten mit den auf dem Server verfügbaren Sprachen, und das ist das, was Linuchs braucht.

          Tschö, Auge

          --
          Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
          Hohle Köpfe von Terry Pratchett
          1. Hi,

            das Ding aus Drupal sieht ganz gut aus.
            Bisher allerdings ohne Gewähr. Habe es selber noch nicht geprüft.

            Grüße
            localhorst

            1. Hallo

              das Ding aus Drupal sieht ganz gut aus.
              Bisher allerdings ohne Gewähr. Habe es selber noch nicht geprüft.

              Früher™️ gab es in den SelfHTML-Fachartikeln ebenfalls eine PHP-basierte Lösung. Ob die nach heutigen Maßstäben noch für gut zu befinden wäre, steht auf einem anderen Blatt. Das „Nicht-Drupal-Ding“ aus diesem deinen Posting sieht, obwohl es auch schon 12 Jahre alt ist, auf den ersten Blick auch schlüssig aus.

              Tschö, Auge

              --
              Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
              Hohle Köpfe von Terry Pratchett