2010-12-06 7 views
0

J'essaie de créer un formulaire PHP qui génère du code JSON personnalisé.Rechercher/remplacer après que le code PHP a été appliqué

Jetez un oeil: http://s194239704.onlinehome.us/bcembed/

La sortie de code JSON que l'application crée est erroné. Je dois faire une recherche et remplacer pour enlever quelques-unes des virgules.

Le code source (partielle) ressemble à ceci:

{ 
<!-- ALBUM ART --><span <?php if($artdisplay!="block") echo "style=\"display:none;\""; ?>>"art": { "x": <?php echo $artx; ?>, "y": <?php echo $arty; ?>, "w": <?php if($artsize=="small") {echo "100";} elseif($artsize=="large") {echo "150";} ?>, "h": <?php if($artsize=="small") {echo "100";} elseif($artsize=="large") {echo "150";} ?>, "show": true },</span> 
<!-- MAINTEXT --><span <?php if($maintextdisplay!="block") echo "style=\"display:none;\""; ?>>"maintext": { "x": <?php echo $maintextx; ?>, "y": <?php echo $maintexty; ?>, "w": <?php echo $maintextw; ?>, "h": <?php echo $maintexth; ?>, "show": true, "styles": { "fontSize": "<?php echo $maintextfontsize; ?>", "textAlign": "<?php echo $maintextalign; ?>", <?php if($maintextbold=="bold") echo "\"fontWeight\": \"" . $maintextbold . "\","; ?> <?php if($maintextitalic=="italic") echo "\"fontStyle\": \"" . $maintextitalic . "\","; ?> }},</span> 
} 

Je veux lancer la recherche/remplacer après le PHP est appliqué. J'ai essayé d'emballer le tout dans une recherche/un remplacement JavaScript, parce que je pensais que le PHP serait exécuté avant le code Javascript. Mais rien ne s'est passé.

Pouvez-vous dire que je suis dans la tête? copie foireux et coller ne peuvent me faire jusqu'à présent ...


Edit: Je ne sais pas json_encode. Cela semble fonctionner, mais j'ai rencontré un autre problème. Je veux avoir ce que la sortie:

"currenttime": { 
    "x": 0, 
    "y": 0, 
    "w": 30, 
    "h": 30, 
    "show": true, 
    "styles": { 
    "fontSize": "13", 
    "fontWeight": "bold", 
    "fontStyle": "null", 
    "textAlign": "center" 
    } 
} 

Et c'est le code que je suis en train d'utiliser:

$jsonData['currenttime'] = array(
    'x' => $currenttimex, 
    'y' => $currenttimey, 
    'w' => $currenttimew, 
    'h' => $currenttimeh, 
    'show' => $currenttimedisplay=="block" ? true : false, 
    ['styles'] = array(
    'fontSize' => $currenttimefontsize, 
    'fontWeight' => $currenttimebold, 
    'fontStyle' => $currenttimeitalic, 
    'textAlign' => $currenttimealign 
) 
); 

Il est comme je l'ai besoin d'un sous-ensemble pour les styles ... ce qui est la bonne façon de formater cela?

+2

Y at-il une raison vous écrivez manuellement le json au lieu d'utiliser la fonction php 'json_encode'? – prodigitalson

+0

Juste par curiosité, pourquoi ne pas stocker les données dans un tableau et simplement 'json_encode()' à la fin? –

+0

Parce que je suis un noob. –

Répondre

4

Youre essentiellement ok, mais vous avez des erreurs de syntaxe:

$jsonData['currenttime'] = array(
    'x' => $currenttimex, 
    'y' => $currenttimey, 
    'w' => $currenttimew, 
    'h' => $currenttimeh, 
    'show' => $currenttimedisplay =="block" ? true : false, 
    'styles' => array(
    'fontSize' => $currenttimefontsize, 
    'fontWeight' => $currenttimebold, 
    'fontStyle' => $currenttimeitalic, 
    'textAlign' => $currenttimealign 
) 
); 

Je ne reviendrai pas à la main avec ce ... json_encode utilise à la place:

$jsonData = array(); 

$jsonData['art'] = array(
    'x' => $artx, 
    'y' => $arty, 
    'w' => $artsize=="small" ? 100 : ($artsize == 'large' ? 150 : null), 
    'h' => $artsize=="small" ? 100 : ($artsize == 'large' ? 150 : null), 
    'show' => true 
); 

echo json_encode($jsonData); 
+0

+1 approche beaucoup mieux. –

+0

Merci pour cela. Cette structure de tableau fonctionne, mais j'ai besoin d'ajouter un sous-tableau. Voir mon post édité ci-dessus pour des exemples de code. –

+0

Vous êtes sur la bonne voie avec votre mise à jour ... votre syntaxe est juste éteinte ... voir ma mise à jour. – prodigitalson

Questions connexes