2017-11-24 1 views
3

Das Problem sieht einfach aus, aber es braucht Zeit, um herauszufinden. Ich muss ndash Zeichen von einigen Zeichenketten in einem Projekt loswerden. Nicht die HTML-Entität & ndash;, aber das tatsächliche Zeichen (-). Die Verwendung von str_replace() und preg_replace() funktionierte nicht.Wie ersetzen oder entfernen Sie ndash Zeichen aus einer Zeichenfolge?

bereits versucht:

$new_str = str_replace('–', '', $str_with_ndash_char);  

auch versucht:

$new_str = preg_replace('/–/', '', $str_with_ndash_char); 

Außerdem ist es ein Vermächtnis Projekt. Einige Teile davon sind iso-8859-1-kodiert und einige andere sind utf-8-kodiert. Ich bemerkte, dass mein Editor (Komodo Edit) beschwert sich über den Charakter ndash wenn eine PHP-Datei iso-8859-1 ist, den Charakter zu verlieren, wenn ich die Datei speichern, wie folgt aus:

$new_str = str_replace('?', '', $str_with_ndash_char); 

Konvertieren alles utf-8 Dies führt zu einer Menge von Müll-Zeichen (dasselbe für den umgekehrten Fall, alles in iso-8859-1 umwandelnd), also vermeide ich es, es sei denn, es ist wirklich, wirklich notwendig.

Bearbeitet: entfernt doppelte $ Zeichen (schlechte STRG + V).

Antwort

1

Ich habe gerade ausprobiert, was Sie tun und arbeitete gut, stellen Sie sicher, dass es ist N-gestrichelt in der Zeichenfolge und nicht em-Bindestriche.

Ich habe versucht, beide Arten zu ersetzen und fand keine Probleme.

$str = str_replace('—', '', '–test—'); 
echo $str . '</br>'; 
$str = str_replace('–', '', $str);  
echo $str; 

Das gibt mir das Ergebnis:

-test 
test 

Einige konkreteres Beispiel auch schön sein würde. Wie die Zeichenfolgen, die Sie versuchen zu ändern, und nicht nur die Variablen.

+0

Zum Beispiel dieser Zeichenfolge: "Tributário - Trabalhista - Previdenciário - Tempo de Guarda de Documentos" – Emerson

+0

Lauf '$ str = str_replace ('-', '',„Tributário - Trabalhista - Previdenciário - Tempo de Guarda de Documentos ");' funktioniert ganz gut für mich – Tobias

+0

Was ist, wenn Sie beide meine Methoden ausprobiert habe ich auf der gleichen Zeichenfolge geschrieben und wiederholte sie zwischen den Aufnahmen? Jede Differenz? – Tobias

1

Es scheint, dass der Fehler im redundanten $ -Zeichen steht. Es sollte genau ein Dollarzeichen in einer Variablen sein.
So sollte die Linie $new_str = str_replace('–', '', $str_with_ndash_char); gut funktionieren.

Aber wenn alles OK in Code in einem Projekt, das Sie sollten check out this answer

Versuchen Sie auch, Fehler Reportin-Modus wechseln auf E_ALL. Legen Sie error_reporting(E_ALL); am Anfang des Skripts

+0

Double $ Zeichen war meine schlechte beim Posten der Frage. – Emerson

0

Endlich ist es gelöst:

$new_str = preg_replace("/[^[:alnum:]]/", '', $old_str) 

Be davor gewarnt, dass dies alles zu entfernen, die nicht alphanumerische ist, nicht nur der ndash Charakter. In meinem Fall brauche ich keinen anderen als den alphanumerischen Charakter.

Verwandte Themen