Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Обработка массива строк


Автор: HeaRtLy 23.5.2004, 18:35
Есть массив строк. Требуется:
1. Выкинуть пустые строки
2. Вырезать четыре последних слога каждой строки, поместив их в новый массив.
Как?

Автор: Dr.Death 23.5.2004, 20:36
Цитата

2. Вырезать четыре последних слога каждой строки, поместив их в новый массив.

Четыре последниз слога чего, слова?

Автор: Soldier of Fortune 23.5.2004, 20:56
Может 4 последних слоВа ???

Автор: arial 23.5.2004, 21:31
Цитата(HeaRtLy @ 23.5.2004, 19:35)
Есть массив строк. Требуется:
1. Выкинуть пустые строки

Код
$array = Array(
   'word1',
   'word2',
   '',
   'word3',
   '',
   'word4',
   );

for ($i = 0; $i < sizeof($array); $i++) {
   $array[$i] = trim($array[$i]);
   if (strlen($array[$i]) == 0) {
       unset($array[$i]);
   }
}

Автор: HeaRtLy 23.5.2004, 22:04
Dr.Death
Soldier of Fortune
Нет, именно слога. Четыре последних слога от строки, даже если они в нескольких словах.

arial
Спасибо smile.gif

Автор: Secandr 23.5.2004, 23:35
HeaRtLy А вы представляете как слово на слога разбить? Я лично плохо, у меня 2 по русскому sad.gif
Подскажите правило.

Автор: Dr.Death 24.5.2004, 05:52
Secandr
Вот как, на примерах, есть слово молоко - будет по слогам мо-ло-ко. Есть слово мама, будет по слогам ма-ма. Есть слово отличник - будет от-лич-ник.
з.ы. Разбить слово по слогам достаточно трудная задача IMHO

Автор: HeaRtLy 24.5.2004, 09:47
Требуется отделить четыре последних гласных + ещё одна согласная. Не строгое разбитие, а примерное.

Автор: VVp 24.5.2004, 10:38
$glasnye=explode(":","а:е:и:о:у:ы:э:ю:я"); //можно еще большие буквы добавить
$flag=0;
$pos=strlen($stroka)-1;
while(($flag!=4)&&($pos>0)) {
$symbol=substr($stroka,$pos--,1);
foreach ($glasnye as $i=>$k) if ($symbol==$k) $flag++;
}

$newstr=substr($stroka,0,$pos);

Вот примерно так, не проверял, что-то мог напутать.
Можно еще перед последней строкой проверять не является ли предыдущая буква согласной и если да, вырезать и ее.
А вообще чтобы написать корректно работающий алгоритм(в смысле русского языка), нужен как минимум филолог. А то встречаются всякие слова с 3-мя гласными или уж не помню сколько согласных подряд бывает, там вобще хрен разбери где слог начинается.

Автор: Secandr 24.5.2004, 20:34
Dr.Death Дело в том, что со слогами в русском туго, есть очень интересные слова, на подобии фамилии Мкртчан smile.gif

Автор: HeaRtLy 29.5.2004, 01:28
Вот такое счастье получилось у меня для одной строчки. На скорую руку. Относительно прилично отрезает мне куски строк для последующей обработки.
Код
<html>
<head>
</head>
<body>
<?
$ae=0; /*Переменная про гласные. Счётчик.*/
for($i=strlen($text)-1;$i>=0;$i--){
  if(strchr('аеёиоуыэюяАЕЁИОУЫЭЮЯ',$text[$i])) $ae++;
  if($ae>4) break;
}
print substr($text,$i+1);
?>
<form action='end4.php'>
<input type=text name=text>
<input type=submit>
</form>
</body>
</html>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)