Php strstr не работает должным образом


Я пытаюсь избавиться от - в строке типа 50-000 и вывести 50000, но не могу использовать strstr. Вот код, который я пробовал

$addr = "50-000";
echo $addr = strtr($addr, "-", "");

Любые подсказки, что здесь происходит не так.

Спасибо.


person pal4life    schedule 28.01.2014    source источник
comment
str_replace намного быстрее, чем strtr, хотя в реальном мире это, вероятно, не имело бы значения.   -  person    schedule 29.01.2014
comment
Для этого я сослался на это обсуждение stackoverflow.com/questions/8177296/   -  person pal4life    schedule 29.01.2014


Ответы (3)


Просто используйте str_replace()

echo str_replace('-', '', "50-000");
person John Conde    schedule 28.01.2014

попробуй это

echo str_replace("-","","50-000");

person Mohammed Sufian    schedule 28.01.2014
comment
Спасибо за это, но что бы вы посоветовали не так с strstr? Какие-то проблемы с синтаксисом? - person pal4life; 29.01.2014
comment
проверьте это для деталей: stackoverflow. ком/вопросы/8177296/ - person Mohammed Sufian; 29.01.2014

Согласно руководству:

string strtr ( string $str , string $from , string $to )

Если даны три аргумента, ... Если from и to имеют различную длину, лишние символы в более длинном из двух игнорируются. Длина str будет такой же, как и возвращаемое значение.

Поскольку "-" длиннее, чем "", символ игнорируется.
Поскольку этот вызов с тремя аргументами возвращает строку той же длины, сокращение строки с "50-000" до "50000" может не помочь.

Вместо этого вы можете попробовать вызов с двумя аргументами, где длина возвращаемой строки может отличаться:

string strtr ( string $str , array $replace_pairs )

E.g.

$addr = "50-000";
echo $addr = strtr($addr, array("-"=>""));
// returns "50000"

Если вам интересно узнать больше о strtr() и str_replace():
PHP strtr vs str_replace бенчмаркинг
Когда использовать strtr vs str_replace?

person yhd.leung    schedule 10.05.2017