strpos не ищет строку из данных массива [duplicate]

0

Хотите получить выведенную переменную, которую я могу отдать в любом месте, из этого утверждения. Необходимо проверить значение $ PageTitle, затем вывести правильное значение в переменную:

//Информация о странице

$PageTitle = "audio";

//Body header menu
$search_for = array('Electrical Service' => 'electrical, electrician, security, audio, video', 'Plumbing Service' => 'heating, gas', 'water' => 'water');

foreach ($search_for as $name=>$term){
 if (strpos($PageTitle,$term) !== false){
  echo $name;
  // add break; here if you want to display only one (first) found
 }
}

//need to echo result anywhere on page
echo $name;

FIDDLE: http://codepad.viper-7.com/FAelDG

Он выводит "воду" вместо "Электрическая служба"

Ответил BigScar очень красивым и элегантным способом.

как получить результаты поиска от строки до переменной эха

Теги:

2 ответа

3
Лучший ответ

Вы неправильно использовали strpos(). Если вы изучите руководство: http://php.net/manual/en/function.strpos.php

И возьмите цитату оттуда:

смешанные strpos (строка $ haystack, смешанная $ needle [, int $ offset = 0])

Поэтому вам нужно изменить порядок своих аргументов, например:

if (strpos($term, $PageTitle) !== false){
         //^^^^^^^^^^^^^^^^^ Changed
  • 0
    решает ли «смешанные строки» проблему с тем фактом, что если переменная содержит любое другое слово, она не работает, например. $ PageTitle = "аудио-видео";
  • 0
    @ david Это не соответствует, потому что это должно быть точное соответствие и в стоге сена есть запятая в строке
Показать ещё 6 комментариев
3

У вас есть аргументы strpos() неправильным образом. Должен быть:

if (strpos($term,$PageTitle) !== false){

Взгляните на подпись функции: стог сена, игла, а не игла, стога сена

смешанные strpos (строка $ haystack, смешанная $ needle [, int $ offset = 0])

Обновлены демо- выходы Electrical Service.

  • 0
    codepad.viper-7.com/vowaKO - большое спасибо, единственное, что он должен быть чистым, если $ PageTitle содержит любые другие слова, которые он пропускает, например, $ PageTitle = "audio video"; это не будет соответствовать.
  • 0
    даже пробел, выбрасывает поиск
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню