Domanda

Ho una stringa simile "Welcome to McDonalds®: I'm loving it™" ...Voglio sbarazzarmi di ":", "'", ® E simboli.Finora ho provato quanto segue:

$string = "Welcome to McDonalds®: I'm loving it™";
$string = preg_replace('/[^a-zA-Z0-9 -]/', '', $string); 

Ma sull'output ricevo:

"Welcome to McDonaldsreg Im loving ittrade"...COSÌ preg_replace in qualche modo si converte ® A 'reg' E A 'trade', il che non va bene per me e non riesco a capire perché avvenga una tale conversione.

Come posso eliminare questa conversione?

Risolto: Grazie per le idee, ragazzi.Ho risolto il problema:

$string = preg_replace(
    array('/[^a-zA-Z0-9 -]/', '/&[^\s]*;/'), 
    '', 
    preg_replace(
        array('/&[^\s]*;/'), 
        '', 
        htmlentities($string)
    )
);
È stato utile?

Soluzione

Probabilmente stai avendo i caratteri speciali in , cioè ® è davvero ® nella stringa. Quindi non è visto da l'operazione di sostituzione.

Per risolvere questo problema, è possibile filtrare per il & QUALCOSA; sottostringa, e rimuoverli. Ci potrebbero essere i metodi built-in per fare questo, forse html_entity_decode .

Altri suggerimenti

Se si sta cercando di sostituire solo i personaggi citati, utilizzare

$cleaned = str_replace(array('®','™','®','™', ":", "'"), '', $string);

metodi di sostituzione stringa regolare di solito sono più veloci e non c'è niente nel tuo esempio che si desidera sostituire che avrebbe bisogno il potere pattern matching del motore delle espressioni regolari.

EDIT a causa di commenti: Se è necessario sostituire i modelli dei personaggi (come indicato dalla soluzione che ti sei dato), un Regex è infatti più appropriato e pratica.

Inoltre, sono sicuro che McD richiede che entrambi i simboli per essere a posto se questo slogan viene utilizzato su qualsiasi sito web pubblico

® è ®, e ™ lo è ™.Pertanto, ti consigliamo di rimuovere tutto ciò che segue
Il modello &[#0-9a-z]+; in anticipo:

$input = "Remove all ™ and ® symbols, please.";
$string = preg_replace("/&[#0-9a-z]+;/i", "", $input);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top