Поиск в переменной PHP и запись найденного слова

123 4
DarkHorse
На сайте с 29.12.2013
Offline
45
2257

Здравствуйте, друзья!

Пожалуйста, помогите в данном вопросе.

Дано: Имеется переменная $text = "Петя решил отпраздновать Новый год в славном городе Казань, хотя Маша предлагала ему поехать в Санкт-Петербург".

Задача: Записать в переменную $gorod - любой город (первый попавшийся, или наоборот последний, без разницы, но только один) из массива городов, встречающийся в переменной $text.

Массив городов

Если встречается слово "Воронеж" записать $gorod = "voronezh"

Если встречается слово "Москва" записать $gorod = "moskva"

Если встречается слово "Казань" записать $gorod = "kazan"

Если встречается слово "Реутов" записать $gorod = "reutov"

Если встречается слово "Санкт-Петербург" записать $gorod = "piter"

Если встречается слово "Нью-Йорк" записать $gorod = "newyork"

Если встречается слово "Владивосток" записать $gorod = "vladivostok"

И если не встречается ничего из предложенного нами то записать $gorod = "netgoroda"

Вперед в бой, а битва все решит!
veleg
На сайте с 30.01.2011
Offline
142
#1

либо прегматч, либо эксплоидом заносишь $text в массив и далее foreach и каждый элемент сравниваешь при помощи in_array()

То есть будет

$array = array(Петя ,решил, отпраздновать ,Новый, год, в ,славном ,городе ,Казань, хотя, Маша ,предлагала, ему ,поехать, в ,Санкт-Петербург,);

Естественно все в кавычках. Далее через in_array.

А еще лучше сравнение двух массивов($array и $goroda) и вывод список совпадений.

Фигачу Телеграм-ботов ( https://teleg.run/veleg )
DarkHorse
На сайте с 29.12.2013
Offline
45
#2

Есть какой-либо пример? Из того что написано - пока мало что понятно.

veleg
На сайте с 30.01.2011
Offline
142
#3
W
На сайте с 09.04.2013
Offline
46
#4


<?php
function getCity($text,$cities){
foreach ($cities as $city => $transliterate) {
if (stripos($text, $city) !== false) return $transliterate;
}
return 'netgoroda';
}

$cities=array(
'Воронеж'=>'voronezh',
'Москва'=>'moskva',
'Казань'=>'kazan',
'Реутов'=>'reutov',
'Санкт-Петербург'=>'piter',
'Нью-Йорк'=>'newyork',
'Владивосток'=>'vladivostok',
);

$text = "Петя решил отпраздновать Новый год в славном городе Казань, хотя Маша предлагала ему поехать в Санкт-Петербург";

$gorod=getCity($text,$cities);

echo $gorod;
DarkHorse
На сайте с 29.12.2013
Offline
45
#5

webjey, Спасибо огромное! То, что нужно!!!

DarkHorse
На сайте с 29.12.2013
Offline
45
#6
webjey:

<?php
function getCity($text,$cities){
foreach ($cities as $city => $transliterate) {
if (stripos($text, $city) !== false) return $transliterate;
}
return 'netgoroda';
}

$cities=array(
'Воронеж'=>'voronezh',
'Москва'=>'moskva',
'Казань'=>'kazan',
'Реутов'=>'reutov',
'Санкт-Петербург'=>'piter',
'Нью-Йорк'=>'newyork',
'Владивосток'=>'vladivostok',
);

$text = "Петя решил отпраздновать Новый год в славном городе Казань, хотя Маша предлагала ему поехать в Санкт-Петербург";

$gorod=getCity($text,$cities);

echo $gorod;

Подскажите, как можно исправить функцию, если условия немного поменялись:

$text = "Петя решил отпраздновать Новый год в славном городе Казань за 25 850 рублей, хотя Маша предлагала ему поехать в Санкт-Петербург";

Как "выцепить" и записать в переменную стоимость в 25 850 рублей? Грубо говоря, хочется что-то подобное - *Найди слово "рублей" и занеси в переменную все числа слева от этого слова. (!Внимание 25850 и 25 850 - одна с пробелом, другая без).

[umka]
На сайте с 25.05.2008
Offline
456
#7

Домашки, курсовые, дипломные — бесплатно!

Просто создай тему на сёрче и добрые самаритяне всё напишут за тебя!

Лог в помощь!
[Удален]
#8

По первому:

<?

$cities=array(

'Воронеж'=>'voronezh',

'Москва'=>'moskva',

'Казань'=>'kazan',

'Реутов'=>'reutov',

'Санкт-Петербург'=>'piter',

'Нью-Йорк'=>'newyork',

'Владивосток'=>'vladivostok',

);

$text = "Петя решил отпраздновать Новый год в славном городе Казань, хотя Маша предлагала ему поехать в Санкт-Петербург";

foreach ($cities as $city => $t) {

if (preg_match("/$city/", $text)) {$gorod=$t; break;}

else $gorod='netgoroda';

}

print $gorod;

?>

---------- Добавлено 13.12.2016 в 01:40 ----------

По второму:

$text = "Петя решил отпраздновать Новый год в славном городе Казань за 25850 рублей, хотя Маша предлагала ему поехать в Санкт-Петербург";

if (preg_match("/(\d* *\d+) рублей/", $text, $u)) $rub = preg_replace("/ /","",$u[1]);

print $rub;

DarkHorse
На сайте с 29.12.2013
Offline
45
#9

[umka], ахаххахаахха :) Сборник ГДЗ "Сёрч", под ред. С. Петренко, Издательство "Ашманов и К".

miltorg, Спасибо большое! вечером попробую

K0
На сайте с 01.09.2016
Offline
72
#10

А если текст будет вот такой, то не сработает ни одно приведенное решение: 😂

$text = "Петя решил отпраздновать Новый год в славном городе Москве за тридцать тысяч рублей, хотя Маша предлагала ему поехать в Вологду".

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий