2010-11-30 5 views
1

Also habe ich ein Suchfeld in einer Website die wir entwickeln, dass sowohl mit Englisch und Griechisch Produkt Zeichenfolge in einer Datenbank suchen. Ich versuche, die Texteingabe von allen möglichen Sonderzeichen wie:/zu löschen. , '] [% & _ usw. und ersetzen Sie sie durch ein Leerzeichen oder löschen Sie sie vollständig. Auch Doppel Instanzen von ihnen sollten gestrichen werden, wie ^^, & &, [[etc.Ersetzen bestimmte Zeichen, während Unicode erlaubt (PHP)

Ich habe mit preg_replace herumdurcheinander, aber nicht eine Lösung finden ...

Vielen Dank im Voraus.

+1

Also, welche Zeichen * sind dann erlaubt? a-z und & alpha; - & omega; Was ist mit nicht-lateinischen, nicht-griechischen, nicht "speziellen" Zeichen wie あ - ん? – deceze

Antwort

2

Mit preg_replace Sie können tun, was Sie suchen. Im nächsten Beispiel alle nicht a-z noch A-Z, noch/_ | + - Zeichen werden durch ‚‘ (nichts, leere Zeichenkette) ersetzt

preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $str); 

die Zeichen fügen Sie in dieser Liste zulassen möchten, und Sie werden Ihre Funktion haben.

Anderen Weg wäre mit str_replace(), aber hier müssen Sie nacheinander alle Elemente einfügen, die Sie in verschiedenen Funktionsaufrufen entfernen möchten.

Ich hoffe, es hilft

+0

Großartig, danke. Ich habe damit angefangen und mir etwas Machbares ausgedacht. Ich denke... –

0

Warum nicht ein Array erstellen und str_replace verwenden?

Ersetzt alle Werte des Arrays durch "", in anderen Worten nichts.

2

ich endlich kam auf diese:

$term = preg_replace("/[^\p{Greek}a-zA-Z0-9\s]+/u", '', $term); 

Es scheint zu funktionieren, was ich brauche. Es erlaubt griechische Zeichen (auch mit Akzenten), alphanumerische und Leerzeichen. Ersetzt alles andere mit einem Leerzeichen. Danke für die schnelle Antwort Jungs.