Подскажите, как это в php сделать
есть переменная, а котором есть текст, например: $var = "Hello world";
и есть массив, например: $arr = array("test" => "Чтото тестируется", "Hello" => "И тебе привет", "bla-bla-bla", "Бла бла бла");
так вот через какую функцию я могу найти в $var совпадение с эллементом массива и выдать значение... допустим: $result = bla_bla($var, $arr);
в итоге $result = "И тебе привет";
Код:
$var = "Hello world";
$arr = array("test" => "Чтото тестируется", "Hello world" => "И тебе привет", "bla-bla-bla", "Бла бла бла");
$result = $arr[$var];
$arr = array("test" => "Чтото тестируется", "Hello world" => "И тебе привет", "bla-bla-bla", "Бла бла бла");
$result = $arr[$var];
нет :)) нужно чтобы находил часть от текста... а не весь!
Код:
/** Немного усложнил строку для примера */
$var = "Hello-world=bla\бл";
/**
Препарируем её, заменяя все кроме букв и цифр символом |
Получится Hello|world|bla|бл
*/
$prepared_var = preg_replace("/[^a-zа-я0-9]/i", "|", $var);
$arr = array("test" => "Чтото тестируется", "Hello" => "И тебе привет", "bla-bla-bla", "Бла бла бла");
/** В $result получим массив из $arr, где значения совпадают со словами в строке */
$result = preg_grep("/$prepared_var/i", $arr);
/** Если нужно искать слова в ключах массива, то делаем так: */
$result = array_flip(preg_grep("/$prepared_var/i", array_flip($arr)));
$var = "Hello-world=bla\бл";
/**
Препарируем её, заменяя все кроме букв и цифр символом |
Получится Hello|world|bla|бл
*/
$prepared_var = preg_replace("/[^a-zа-я0-9]/i", "|", $var);
$arr = array("test" => "Чтото тестируется", "Hello" => "И тебе привет", "bla-bla-bla", "Бла бла бла");
/** В $result получим массив из $arr, где значения совпадают со словами в строке */
$result = preg_grep("/$prepared_var/i", $arr);
/** Если нужно искать слова в ключах массива, то делаем так: */
$result = array_flip(preg_grep("/$prepared_var/i", array_flip($arr)));
обьясню подробнее что мне нужно:
есть переменная, которая содержит допустим: $var = 'This page deleted';
и есть массив, который содержит такие слова: $arr = array ("test"=>"Фигня", "question"=>"фигня", "page"=>"Супер пупер текст", "die"=>"фигня");
далее нужно пропустить переменную $var через чтото, чтобы проверить есть ли в ней совпадения слов из $arr, если есть пишется то, что указано в массиве (в данном примере: Супер пупер текст) , если нет, возвращается false или 0...
Код:
foreach ($arr as $key => $value) {
if (stripos($key, $var) !== false)
echo $value;
}
if (stripos($key, $var) !== false)
echo $value;
}
Цитата: shureg
mfender нет нето :(
обьясню подробнее что мне нужно:
есть переменная, которая содержит допустим: $var = 'This page deleted';
и есть массив, который содержит такие слова: $arr = array ("test"=>"Фигня", "question"=>"фигня", "page"=>"Супер пупер текст", "die"=>"фигня");
далее нужно пропустить переменную $var через чтото, чтобы проверить есть ли в ней совпадения слов из $arr, если есть пишется то, что указано в массиве (в данном примере: Супер пупер текст) , если нет, возвращается false или 0...
обьясню подробнее что мне нужно:
есть переменная, которая содержит допустим: $var = 'This page deleted';
и есть массив, который содержит такие слова: $arr = array ("test"=>"Фигня", "question"=>"фигня", "page"=>"Супер пупер текст", "die"=>"фигня");
далее нужно пропустить переменную $var через чтото, чтобы проверить есть ли в ней совпадения слов из $arr, если есть пишется то, что указано в массиве (в данном примере: Супер пупер текст) , если нет, возвращается false или 0...
Ну так а я тебе что написал? Всё тоже самое. Ну а уж как использовать $result - 'тебе виднее.
Код:
$var = 'This page deleted';
$arr = array ("test"=>"Фигня", "question"=>"фигня", "page"=>"Супер пупер текст", "die"=>"фигня");
$prepared_var = preg_replace("/[^a-zа-я0-9]/i", "|", $var);
$result = array_flip(preg_grep("/$prepared_var/i", array_flip($arr)));
$result теперь
Array
(
[page] => Супер пупер текст
)
/* Изменим условие: */
$var = 'This page test';
$result -
Array
(
[test] => Фигня
[page] => Супер пупер текст
)
$arr = array ("test"=>"Фигня", "question"=>"фигня", "page"=>"Супер пупер текст", "die"=>"фигня");
$prepared_var = preg_replace("/[^a-zа-я0-9]/i", "|", $var);
$result = array_flip(preg_grep("/$prepared_var/i", array_flip($arr)));
$result теперь
Array
(
[page] => Супер пупер текст
)
/* Изменим условие: */
$var = 'This page test';
$result -
Array
(
[test] => Фигня
[page] => Супер пупер текст
)
mfender то что ты дал, не работает как мне нужно! на выходе вообще у меня всегда массив и не с теми данными, что нужно!
ellor! тоже неработает :(
ellor рабоатет, только нужно было: stripos($key, $var) поменять местами: stripos($var,$key)
Цитата: shureg
mfender то что ты дал, не работает как мне нужно! на выходе вообще у меня всегда массив и не с теми данными, что нужно!
Тебе нужно ещё объяснить как из массива получить нужное?
Думал ты совет спрашиваешь, а не полностью готовое решение...
Цитата: mfender
Цитата: shureg
mfender то что ты дал, не работает как мне нужно! на выходе вообще у меня всегда массив и не с теми данными, что нужно!
Тебе нужно ещё объяснить как из массива получить нужное?
Думал ты совет спрашиваешь, а не полностью готовое решение...
нет, не в этом дело. Твой вариант работал только в тестовом режиме, когда я подставлял твои данные когда вставил свои - неработало!