2016-04-27 2 views
-1

Я создаю функцию, которая обнаруживает и удаляет все завершающие специальные символы из строки. Она может конвертировать строки типа:PHP rtrim all trailing special characters

  • "привет-мир"
  • "привет-мир/"
  • "привет-world--"
  • "привет-мир /% - + ... "

в" hello-world ".

любой знает трюк без написания большого количества кодов?

+0

жаль, что это было неправильно, это «привет». – lyhong

ответ

1

Просто для удовольствия

[^a-z\s]+ 

Regex demo

Объяснение:
[^x]: один символ, который не х sample
\s: "символ пробела": пробел, табуляция, перевод строки, каретка возврат, вертикальная табка sample
+: Один или более sample

PHP:

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

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

попробовать этот

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

или избежать apostraphe из строки

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

Вы можете использовать регулярные выражения, как это, в зависимости от ваше определение «специальные символы»:

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

Он заменяет любые символы, которые не являются символом слова (\W) в конце строки $ ни с чем. \W будет соответствовать [^a-zA-Z0-9_], поэтому все, что не является буквой, цифрой или подчеркиванием, будет заменено. Чтобы указать, какие символы специальные символы, используйте регулярное выражение, как это, где вы положили все специальные символы в пределах [] скобок:

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

Это один то, что вы ищете. :

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

Он удаляет все, что не из алфавита, числа, пространства и новой строки. Просто назвать это так:

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

+0

Вы не нуждаетесь в '\ d'' 'ww ''. Он также позволяет подчеркивать. – chris85

+0

О да .. Спасибо за это. – JanLeeYu

Смежные вопросы