Ankündigung

Einklappen
Keine Ankündigung bisher.

[Gelöst]Metadaten "robots" aus der DB auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Gelöst]Metadaten "robots" aus der DB auslesen

    Hallo liebe Community,


    ich will aus einer DB-Tabelle die metadaten für "robots" auslesen.

    Mit dem Folgen Code erhalte ich schon ein Array:
    PHP-Code:
     $document->setMetaData ("robots",join(',',array($list['metadata']))); 
    Da leider mehr Infos in der Spalte (innerhalb einer geschweiften Klammer) zur Verfügung gestellt werden, würde ich gerne nur die "robots" auslesen

    Code:
    {"robots":"index, follow","author":"","rights":"","xreference":""}
    das Resultat soll so aussehen:
    Code:
    meta name=robots content="noindex, follow"
    Danke vorweg

  • #2
    Bahnhof.

    Bei Datenbankfragen bitte SQL- und kein PHP-Code posten.

    Kommentar


    • #3
      Irgendwas mit json_decode()?
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #4
        Zitat von madmaxy Beitrag anzeigen
        Da leider mehr Infos in der Spalte (innerhalb einer geschweiften Klammer) zur Verfügung gestellt werden, würde ich gerne nur die "robots" auslesen

        Code:
        {"robots":"index, follow","author":"","rights":"","xreference":""}
        das Resultat soll so aussehen:
        Code:
        meta name=robots content="noindex, follow"
        Danke vorweg
        Warum soll das manipuliert werden, von "index" auf "noindex"?

        Ohne dieser Manipulation:

        Code:
        test=# create table metadata(id int primary key, data jsonb);
        CREATE TABLE
        test=*# select data->'robots' as robots from metadata where id = 1;
             robots      
        -----------------
         "index, follow"
        (1 Zeile)
        Den String vorher, also "meta name=robots content=" ist ja fix, den kannst einfach davorkleben. Oder bei der Abfrage:

        Code:
        test=*# select 'meta name=robots content=' || (data->'robots')::text as robots from metadata where id = 1;
                          robots                  
        ------------------------------------------
         meta name=robots content="index, follow"
        (1 Zeile)
        Geht natürlich nur, wenn Deine Datenbank mit JSONB umgehen kann, Du sagtest ja nicht, was Du hast.



        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          akretschmer : Sorry, ohne Manipulation. Hab mich vertippt. Die Daten sollen einfach aus der Spalte metadata ausgelesen werden.
          Die DB Version: 5.7.20-nmm1-log

          Ich verstehe leider deinen Code nicht.

          Mit
          PHP-Code:
           $document->setMetaData ("robots"
          hab ich ja schon "meta name=robots content="

          Nun würde ich gerne nur "index, follow" aus der Zeile

          Code:
          {"robots":"index, follow","author":"","rights":"","xreference":""}
          der Spalte "metadata" auslesen.


          Sorry , bin leider kein php-Experte

          Kommentar


          • #6
            Zitat von chorn Beitrag anzeigen
            Irgendwas mit json_decode()?
            [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

            Kommentar


            • #7
              Zitat von madmaxy Beitrag anzeigen
              akretschmer
              Die DB Version: 5.7.20-nmm1-log

              Das wird's wohl sein, ich habe bereits die 10er - Version. Beachte bitte auch meine Signatur.
              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

              Kommentar


              • #8
                akretschmer

                jsondecode scheint zu funktionieren.
                bei folgender Anweisung

                PHP-Code:
                $myjsondecode json_decode($list['metadata'], true); 
                und

                PHP-Code:
                    print_r($myjsondecode); 
                erhalte ich folgende Ausage:

                HTML-Code:
                Array ( [robots] => index, follow [author] => [rights] => [xreference] => )

                das scheint doch erstmal ok zu sein, oder?

                nun will ich nur index,nofollow extrahieren.

                Kommentar


                • #9
                  Zitat von madmaxy Beitrag anzeigen
                  akretschmer

                  das scheint doch erstmal ok zu sein, oder?

                  offenbar ja.
                  PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                  Kommentar


                  • #10
                    Gelöst:

                    $myjsondecode = json_decode($list['metadata'], true);

                    $document->setMetaData ("robots", $myjsondecode["robots"]);

                    Kommentar

                    Lädt...
                    X