2010-10-18 8 views
3

Tout d'abord, je ne connais pas grand-chose à PHP. Je suis plus familier avec CSS. J'utilise le script Ben Ward Tumblr2Wordpress (voici le script sur GitHub) pour exporter mon blog Tumblr en XML (donc je peux l'importer dans mon blog Wordpress). Ce script lit l'API de tumblr, interroge les éléments, fait un peu de formatage et exporte le tout en HTML.Comment ajouter une classe HTML à un script PHP

Je dois le personnaliser juste un peu pour répondre à mes besoins. Par exemple, dans la fonction suivante j'ai besoin du blockquote pour devenir une classe spécifique de blockquote:

function _doBlockQuotes_callback($matches) { 
    $bq = $matches[1]; 
    # trim one level of quoting - trim whitespace-only lines 
    $bq = preg_replace('/^[ ]*>[ ]?|^[ ]+$/m', '', $bq); 
    $bq = $this->runBlockGamut($bq); # recurse 

    $bq = preg_replace('/^/m', " ", $bq); 
    # These leading spaces cause problem with <pre> content, 
    # so we need to fix that: 
    $bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx', array(&$this, '_doBlockQuotes_callback2'), $bq); 

    return "\n". $this->hashBlock("<blockquote>\n$bq\n</blockquote>")."\n\n"; 
} 

Au début, je pensais que ce sera aussi simple que l'ajout de la classe j'ai besoin dans la balise HTML blockquote, comme si <blockquote class="big"> Mais ça casse le code.

Y a-t-il un moyen d'ajouter cet attribut HTML tel qu'il est dans le script PHP? Ou dois-je définir la sortie de ce <blockquote> ailleurs?

Merci d'avance pour tout conseils!

P.

Répondre

0

Vous devez échapper aux guillemets

<blockquote class=\"big\"> 
+0

Eh bien, que puis-je dire. Merci pour ce qui est insaisissable pour le reformatage de ma question ... et à Rocket Ronnie pour la réponse qu'il m'a donnée pendant que ... j'étais encore en train d'éditer la question. C'est rapide. – Parneix

+0

Votre accueil, content je pourrais aider –

2

Votre supposition était correcte, mais vous devez échapper aux citations avec antislashs:

return "\n". $this->hashBlock("<blockquote class=\"big\">\n$bq\n</blockquote>")."\n\n"; 

Sinon, PHP suppose que votre chaîne se termine à la citation class=".

+0

Merci Elusive, je l'apprécie vraiment. Puis-je demander ce que vous avez fait exactement pour formater le code dans ma question. J'ai utilisé les accolades, mais ce n'était pas suffisant. Pendant que vous étiez en train de l'éditer, j'essayais de mettre des guillemets autour de chaque balise dans le code que je citais. Je ferai mieux dans le futur. – Parneix

+0

Le code est mis en forme (et sa syntaxe est mise en surbrillance) en l'indentant de quatre espaces. Les backticks ne fournissent pas de coloration syntaxique. Ils sont destinés à être utilisés pour des mots-clés ou des valeurs. – jwueller

1

Vous pouvez échapper les guillemets doubles ".

"<blockquote class=\"big\">" 

Cependant, si vous allez utiliser des guillemets simples '. C'est inutile.

'<blockquote class="big">' 
+0

guillemets simples ne sont pas appropriés dans ce cas, car leur utilisation désactive l'interpolation variable, qui est utilisée pour '$ bq' – Javier

+0

Je signale simplement que l'échappement de guillemets doubles entre guillemets simples n'est pas nécessaire. – Ruel