Domanda

Io lavoro su un sito web basato su database. La maggior parte dei titoli pagine sono i nomi dei partner che abbiamo, e servito da un database utilizzando PHP.

Per esempio una pagina potrebbe essere chiamato "Experian". Il problema è che alcuni dei valori per i nomi Partner non funzionano perché i valori sono cose come

  $partnername22 = Discover<sup>tm</sup> Magazine

Non posso usare questo per un titolo, perché apice non può presentarsi in un titolo, e non posso cambiare il valore perché molte altre cose dipendono da esso. C'è un trucco che posso tirare per rendere il browser ignorare i tag apice se sono nel titolo?

È stato utile?

Soluzione

Per:

<title><?php echo $offer22name ?>is a magazine</title>

cambia in:

<title><?php echo preg_replace('|<sup>(.*?)</sup>|', '($1)', $offer22name) ?> is a magazine</title>

Ma come Bryan accennato, è necessario utilizzare strip_tags di PHP () in questo scenario. Quindi:

<title><?php echo strip_tags($offer22name) ?> is a magazine</title>

Altri suggerimenti

Sarebbe molto semplice (e probabilmente consigliabile) utilizzare strip_tags di PHP () comando per rimuovere tutto il codice HTML la stringa prima di pubblicare come un titolo.

<title><?PHP echo str_replace('<sup>tm</sup>', '&trade;', $offer22name); ?> is a magazine</title>

In alternativa, più sicuro:

<title><?PHP echo strip_tags(str_replace('<sup>tm</sup>', '&trade;', $offer22name)); ?> is a magazine</title>

In alternativa, la cattura di più casi (non sono sicuro su questo esattamente):

<title><?PHP echo strip_tags(preg_replace('/<sup.*?>\s+[Tt][Mm]\s*</(sup|)>', '&trade;', $offer22name)); ?> is a magazine</title>

È possibile sostituire la '&trade;' con '&#8482;', '&#x2122;', o '™' se lo si desidera (ma assicuratevi codifiche partita per l'ultimo), a seconda della situazione.

Non per quanto ne so, ma se si sta già script fuori una stringa dal DB, perché non si può sceneggiatura la stessa regex stringa di sostituzione di tag (o coppie di tag, come si desidera) con le stringhe vuote?

In una parola, no.

Idealmente si dovrebbe fare $partnername22 = strip_tags('Discover<sup>tm</sup> Magazine'); (o qualcosa di più elaborato), ma se si può non che poi ho paura sei bloccato con una soluzione di Javascript.

Qualcosa di simile:

window.title = window.title.replace(/<sup.*?</sup>/, '');

Regular Expression in PHP che andrà a sostituire testo con (testo):

$title = preg_replace('|<sup>(.*?)</sup>|', '\($1\)', $title);

Si sarebbe simile a farlo in javascript.

Mike, credo che dire questo:

$title = preg_replace('|<sup>(.*?)</sup>|', '$1', $title);

Il modo in cui si aveva prima di stampe alcune barre e parentesi intorno alla parola tag. Giusto?

pg, si potrebbe anche solo fare

$title = preg_replace('|<sup>(.*?)</sup>|', '', $title);

se si vuole rimuovere completamente le informazioni apice dal titolo.

Come per il semplice espediente di alcuni CSS?

h2.title sub, h2.title sup { vertical-align: baseline; font-size:100%; }

È possibile utilizzare la codifica dei caratteri al posto del tag, ad esempio, &trade;, &#153;

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top