Autor Zpráva
Gecko
Profil *
Dobrý den,

rád bych se Vás zeptal na následující problém.

Mám nyní v poli konstanty:

$array_social = array(_facebook, _twitter, _google_plus, _youtube, _linkedin, _google_play);

Některé nesou řetězec, některé ne (jsou prázdné). Hodnoty v poli potřebuji vynést do následující podoby:

"http://facebook.com/uzivatel",
"http://plus.google.com/uzivatel",
"http://twitter.com/uzivatel"

Výsledek bude tedy následující:

   <script type="application/ld+json">
          {
            "sameAs" : [ 
              "http://facebook.com/uzivatel",
              "http://plus.google.com/uzivatel",
              "http://twitter.com/uzivatel"
              ]   
          }
          </script>

S čím si nevím rady, tak to je jak jednotlivé konstanty uzavřít do uvozovek, dále pokud nebude nést ani jedna konstanta žádný řetězec, aby se JS vůbec nevypsal. Vím, že hodnoty si čárkami oddělím přes implode(",", $array_social); nicméně si nevím rady s uvozovkami a empty() v celém array.

Mohl by mě prosím někdo nakopnout?

Děkuji mnohokrát a přeji hezký večer
Alphard
Profil
Zbytečně komplikované. Prázdné hodnoty se vyfiltrují pomocí array_filter() a výpis do json formátu se zařídí pomocí json_encode(['sameAs' => $array_social]). Celé obalit podmínkou, jestli to pole není prázdné.
Gecko
Profil *
Děkuji za odpověď.

Vyzkouším Váš postup :-)
Gecko
Profil *
Dobrý den,
zak vyzkoušeno a funguje, jenom na 2 věci:

1. json_decode špatně vypíše URL:

"{"sameAs":{"0":"https:\/\/www.facebook.com\/uzivatel","2":"https:\/\/plus.google.com\/u\/0\/xxxxxxxxxxxxx\/posts"}},"

2. Vypíše se i "pořadí" URL.

Kód mám nyní následující:

   $array_social = array(_facebook, _twitter, _google_plus, _youtube, _linkedin, _google_play);
   $social_head = array_filter($array_social);
   $social_head_json = json_encode(['sameAs' => $social_head]);
   if (!empty($social_head_json)) {
   $social_head_json_head = $social_head_json.",";
   } else {
   $social_head_json_head = null;
   }

Hledal jsem an Google na řešení opravy URL, ale bohužel jsem nic nenašel.


Děkuji
Keeehi
Profil
Ten json musíš ještě na straně javascriptové dekódovat.
var variable = JSON.parse('string generated by PHP');
Alphard
Profil
Gecko:
2. Vypíše se i "pořadí" URL.
Vypíše se, když je nestandardní. V tomto případě když v něm jsou díry. Mělo by stačit něco jako
json_encode(['sameAs' => array_values([3=>'abc', 'def', 'ghz'])])

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0