2013-12-13 4 views
1

У меня есть функция, которая генерирует хэш и фильтрует символы:PHP быстро заменяет символы?

$str = base64_encode(md5("mystring")); 
$str = str_replace("+", "_", 
      str_replace("/", "-", 
      str_replace("=", "x" $str 
     ))); 

Что такое «правильный» способ сделать это в PHP?

i.e, есть ли более чистый способ?

// Let "tr()" be an imaginary function 
$str = base64_encode(md5("mystring")); 
$str = tr( "+/=", "_-x", $str ); 
+0

Исправлено. Мы фактически используем md5, а не base64_encode. – redolent

ответ

4

Там есть пара вариантов здесь, сначала с помощью str_replace правильно:

$str = str_replace(array('+', '/', '='), array('_', '-', 'x'), $str); 

И есть также всегда забытое strtr:

$str = strtr($str, '+/=', '_-x'); 
+0

Отлично! Я не знаю, почему я не смог найти эту функцию. – redolent

+0

Действительно, я всегда забываю об этом. –

1

Вы можете использовать массивы в str_replace, как это

$replace = Array('+', '/', '='); 
$with = Array('_', '-', 'x'); 
$str = str_replace($replace, $with, $str); 

Надеюсь, что это помогло

1

Вы также можете использовать strtr с массивом.

strtr('replace :this value', array(
    ':this' => 'that' 
)); 
Смежные вопросы