Вопрос по регулярным выражениям

CyberX
На сайте с 08.03.2008
Offline
51
356

Нужно проверить текст на наличие точного вхождения, и если оно присутствует то нужно выбрать из текста его показатель. (на PHP)

Пример точных вхождений:

кока-кола

фанта

спрайт

кока-кола лайт

Пример текста:

кока-кола 1 литр фанта 0,5 литра спрайт 2 литра кока-кола лайт 0,5

Нужно в выбрать данные в виде массива

Пример:

кока-кола 1

фанта 0,5

спрайт 2

кока-кола лайт 0,5

Кто что думает по этому поводу ?

Шустрый хостинг (http://www.colocat.ru) за нормальные деньги (Москва). 30 дней тестовый период. Рекомендую копирайтера aronskaya (/ru/users/73753). Отличные авторские тексты.
[Удален]
#1

<?

header("Content-type: text/html; charset=utf-8");

function val($str, $search, $cache = true)
{
static $data;
$key = crc32($str);
if($cache && isset($data[$key]))
{
$arr = $data[$key];
}
else
{
$a = preg_split("#(\d+(?:,\d+)?)(?:\sлитра?)?#su",$str,-1, PREG_SPLIT_DELIM_CAPTURE);
$a = array_filter(array_map("trim",$a));

$arr = array();
for($i = 0; $i <= floor(count($a)/2); $i += 2)
{
$arr[$a[$i]] = $a[$i+1];
}
$data[$key] = $arr;
}

return @$arr[trim($search)];
}

$str = "кока-кола 1 литр фанта 0,5 литра спрайт 2 литра кока-кола лайт 0,5";
echo val($str, 'кока-кола');

прошу прощения за столько кода, но там я встроил небольшое кеширование )))))))

на случай что не раз будете функцию вызывать)

зы. файл у меня был в ютф8 кодировке, поэтому preg_split модификатор "u"

CyberX
На сайте с 08.03.2008
Offline
51
#2

bearman, спасибо, пойду тестить :)

[Удален]
#3

CyberX, отпишитесь как оно)

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