PHP: небольшая проблема с str_replace

#php

#php

Вопрос:

Мне нужно выполнить array_key_exists с измененной строкой, однако раньше я получал небольшую проблему.

Это иллюстрируется следующим:

 $loggers = array('StackOverflow' => 'Stack Overflow');
$logger_name = str_replace(' ', '', $header['fromaddress']); //Remove space
echo $logger_name;
echo $loggers[$logger_name];
echo $loggers['StackOverflow'] . '<br/>';
  

Вывод следующий:

 StackOverflow  //echo $logger_name
Notice: Undefined index: StackOverflow in C:... on line x //looks like not found using $logger_name
Stack Overflow //I can find it directly
  

Дополнительные правки:

Похоже, проблема в том, что первый вывод, даже если он говорит ‘StackOverflow’, имеет длину 35 при использовании функции strlen($logger_name)… Я не уверен, почему, и если есть какой-либо способ преобразовать это в правильную строку?

Комментарии:

1. Вы удалили пробелы, конечно, они будут не идентичны.

2. Я не уверен, в чем ваша проблема … ? Первая строка приводит к изменению $test на ‘Thisisatest’, поэтому очевидно, что это не равно ‘Это тест’ … ?

3. извините за путаницу, я рад, что поднял настроение вашему дню, хотя: p

4. Что var_dump($logger_name); говорит? Это должно быть string(13) "StackOverflow" .

5. На самом деле там написано string(35) «StackOverflow»:s

Ответ №1:

Я предполагаю, что ваш $header[‘fromaddress’] имеет значение, отличное от «Переполнения стека«, допустим, это «переполнение стека»

str_replace(‘ ‘, «, $header[‘fromaddress’]);

преобразует это в «stackoverflow».

и это не даст вам выходных данных, поскольку ключ массива в PHP чувствителен к регистру.

 echo $loggers[$logger_name];  //  $loggers['stackoverflow']
echo $loggers['StackOverflow'];
  

и вот обновленный код и выходные данные…

 $loggers = array('StackOverflow' => 'Stack Overflow');
$logger_name = str_replace(' ', '', 'Stack Overflow'); //Remove space
echo $logger_name. '<br/>';
echo $loggers[$logger_name]. '<br/>';
echo $loggers['StackOverflow'] . '<br/>';
  

ВЫВОД :-

 StackOverflow
Stack Overflow
Stack Overflow
  

Комментарии:

1. а как насчет массива заголовков?

2. Обновил мой ответ, не могли бы вы попробовать это сейчас?

3. Нет… вы можете видеть, где я показываю вывод, что echo $ logger_name является StackOverflow

Ответ №2:

Используйте это:

 $text = "This is a test";
$array = explode(' ', $text);
$exists = array_key_exists($key, $array);
echo $exists;
  

Надеюсь, это поможет