Есть строка вней от 1 до 5 слов, количество динамическое, если в строке больше 1-о слова и длина строки больше 15 символов, нужно найти самое длинное? Слова разделены пробелом.
09 Май 2013, 17:43что называется, способ "на коленке", велосипедный трюк:
[php:1:97a6c0b729]<?php
$string = 'ololo ехал грека через реку видит грека в реке рак сунул грека руку в реку вотпришелемупипец';
$array_first = explode(' ',$string);
foreach($array_first as $k1=>$v1)
{
$array_second[$k1] = mb_strlen($v1,'utf-8');
}
$max = max($array_second);
foreach($array_first as $k2=>$v2)
{
if(mb_strlen($v2,'utf-8') == $max)
{
$array_max[$k2] = $v2;
}
}
print_r($array_max);
?>[/php:1:97a6c0b729]
добавлено спустя 13 секунд:
[php:1:97a6c0b729]Array ( [15] => вотпришелемупипец )[/php:1:97a6c0b729]
добавлено спустя 1 минуту:
ну и потом добавь свои условия по "вкусу".
добавлено спустя 32 секунды:
можно сделать проще)
Default_mo, спасиба, хотя я так и не понял логики. Ребят может у кого еще есть какие ришения можна без код, я вот думал разбить строку через пробел и создать массив в котором номер ключа будет длина, а как быть если слова одинаковые тогда будет токо одно слово этой длины.
09 Май 2013, 18:07[php:1:45e093835e]$sMax = "";
preg_match_all("[a-zA-Zа-яА-Я-]+", "ololo ехал грека", $aOut);
for ($i = 0; $i < count($aOut[0]); $i++) {
if (strlen($aOut[0][$i]) > strlen($sMax)) $sMax = $aOut[0][$i];
}
echo $sMax;[/php:1:45e093835e]
Fever, работать будет криво) strlen кирилицу считает не как латиницу, на букву приходится 2 байта, вместо 1. в итоге у тебя размер слова будет count_sym*2; т.е. слово
abcd будет короче чем абв )
вот так лучше, мб (мой код упростил, похож на код из 4 поста):
[php:1:0a57c62140]<?php
$string = 'ololo ехал грека через реку видит грека в реке рак сунул грека руку в реку вотпришелемупиздец';
$max = '';
$array_first = explode(' ',$string);
for($i = 0;$i < count($array_first);$i++)
{
if(mb_strlen($array_first[$i],'utf-8') > mb_strlen($max,'utf-8'))
{
$max = $array_first[$i];
}
}
echo $max
?>[/php:1:0a57c62140]
Уже давно есть известные алгоритмы, стоит хорошенько поискать.
Например переводишь строку в массив, где элменты слова.
потом цикл, делаешь первый элемент искомым самым длинным словом, а остальные сравниваешьс ним, если больше, то переопределяешь максимальный элемент.
Насчет кодировок да можно использовать библы mb_ или iconv_ в utf8
Решил проблему обычным обрезанием строки до 16 символов, как оказалось в большинстве случеев этого достаточно.
09 Май 2013, 21:11