2016-04-27 14 views
-1

Ich mache eine Funktion, die alle nachfolgenden Sonderzeichen aus Zeichenfolge erkennen und entfernen. Es kann Strings wie konvertieren:PHP rtrim alle nachlaufenden Sonderzeichen

  • "hallo-Welt"
  • "hallo-world/"
  • "hallo-world--"
  • "hallo-Welt /% - + ... "

in "Hallo Welt".

Wer kennt den Trick, ohne viele Codes zu schreiben?

+0

leid, es war falsch, es ist "Hallo". – lyhong

Antwort

1

Just for fun

[^a-z\s]+ 

Regex demo

Erläuterung:
[^x]: Ein Zeichen, das nicht x sample
\s ist: "Leerzeichen": Leerzeichen, Tabulator, Newline, Schlitten Rückkehr, vertikale Registerkarte sample
+: Ein oder mehr sample

PHP:

$re = "/[^a-z\\s]+/i"; 
$str = "Hello world\nhello world/\nhello world--\nhellow world/%--+..."; 
$subst = ""; 

$result = preg_replace($re, $subst, $str); 
1

versuchen, diesen

$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars. 

oder apostraphe von String entkommen

preg_replace('/[^A-Za-z0-9\-\']/', '', $string); // escape apostraphe 
1

Sie konnten einen regulären Ausdruck wie diese, je nach Ihre Definition von "Sonderzeichen":

function clean_string($input) { 
    return preg_replace('/\W+$/', '', $input); 
} 

Es ersetzt alle Zeichen, die kein Wortzeichen sind (\W) am Ende der Zeichenfolge $ mit nichts. \W entspricht [^a-zA-Z0-9_], also wird alles, was kein Buchstabe, Ziffer oder Unterstrich ist, ersetzt. Um festzulegen, welche Zeichen sind Sonderzeichen, verwenden Sie einen regulären Ausdruck wie dieser, wo Sie alle Ihre Sonderzeichen innerhalb der [] Klammern gesetzt:

function clean_string($input) { 
    return preg_replace('/[\/%.+-]+$/', '', $input); 
} 
0

Dieses ist, was Sie suchen. :

([^\n\w\d \"]*)$

Es entfernt alles, was nicht aus dem Alphabet, eine Zahl, einen Raum und eine neue Zeile ist. nennen es einfach so:

preg_replace('/([^\n\w\s]*)$/', '', $string);

+0

Sie brauchen nicht das '\ d' das' \ w' beinhaltet das. Es erlaubt auch Unterstriche. – chris85

+0

Oh ja .. Danke dafür. – JanLeeYu