|
|
|
| Есть строка типа "Летят перелетные птицы".
Нужно разбить её на слова, каждое из которых ввести в переменную массива. При этом после каждой гласной надо вставить цифру 5, причем в каждом слове на новом месте. Чтобы получилось следующее:
$a[0] = "Ле5тят";
$a[1] = "Летя5т";
$a[2] = "пе5релётные";
$a[3] = "пере5летные";
$a[4] = "переле5тные";
$a[5] = "перелетны5е";
$a[6] = "перелётные5";
$a[7] = "пти5цы";
$a[8] = "птицы5";
Как бы это осуществить? | |
|
|
|
|
|
|
|
для: Владимир55
(03.06.2008 в 15:20)
| | Как вариант, можно попробовать это:
<?
$vow_array = array('а','о','у','е','и','ы','я');
$string = "Летят перелетные птицы";
$word_array = explode(" ", $string);
foreach ($word_array as $word)
for ($i = 0; $i < strlen($word); $i++)
if (in_array($word[$i], $vow_array))
$a[] = substr($word, 0, $i+1).'5'.substr($word, $i+1);
?>
|
Выведет:
Array
(
[0] => Ле5тят
[1] => Летя5т
[2] => пе5релетные
[3] => пере5летные
[4] => переле5тные
[5] => перелетны5е
[6] => перелетные5
[7] => пти5цы
[8] => птицы5
) | |
|
|
|
|
|
|
|
для: olejek
(03.06.2008 в 16:25)
| | olejek, спасибо!
Здорово так получилось, кратко, красиво!
Настоящее удовольствие видеть Ваш код! | |
|
|
|
|
|
|
|
для: olejek
(03.06.2008 в 16:25)
| | > 'а','о','у','е','и','ы','я'
Мне казалось, что гласных букв несколько больше:) | |
|
|
|
|
|
|
|
для: BinLaden
(03.06.2008 в 17:40)
| | Да-аа, это очень принципиально, и вопрос был именно, сколько гласных букв в русском алфавите. | |
|
|
|
|
|
|
|
для: olejek
(03.06.2008 в 17:44)
| | Иронизировать изволите? Ну хорошо, давайте посмотрим на ошибки по сути дела:
<?php
$vow_array = array('а','о','у','е','и','ы','я');
$string = "Америка\r\nи\r\nАфрика";
$word_array = explode(" ", $string);
foreach ($word_array as $word)
for ($i = 0; $i < strlen($word); $i++)
if (in_array($word[$i], $vow_array))
$a[] = substr($word, 0, $i+1).'5'.substr($word, $i+1);
print_r($a);
?>
|
| |
|
|
|
|
|
|
|
для: BinLaden
(03.06.2008 в 17:57)
| | А что не так то?
Как то я качественных ляпов не узрел...
После замены на str_split('аоуыэяёюиеАОУЫЭЯЁЮИЕ') и preg_split("/[\s]+/" всё вроде как было заказано:
Array ( [0] => А5мерика [1] => Аме5рика [2] => Амери5ка [3] => Америка5 [4] => и5 [5] => А5фрика [6] => Афри5ка [7] => Африка5 ) | |
|
|
|
|
|
|
|
для: Trianon
(03.06.2008 в 18:22)
| | > А что не так то?
Как минимум это:
> $word_array = explode(" ", $string);
На выходе, как я понял автора, в каждом элементе должно быть одно слово, а получается:
> Array ( [0] => Аме5рика и Африка [1] => Амери5ка и Африка [2] => Америка5 и Африка [3] => Америка и5 Африка [4] => Америка и Афри5ка [5] => Америка и Африка5 ) | |
|
|
|
|
|
|
|
для: BinLaden
(03.06.2008 в 17:57)
| | Алфавит дополнить несложно:
$vow_array = array('а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я');
|
Хуже то, что не обрабатывается первая гласная (или не всегда обрабатывается).
К примеру, если задать
$string = "Август Августа Августовский Октябрьский Январь Апрель Апреля Июнь Июньский";
|
То получаем
Авгу5ст
Авгу5ста
Августа5
Авгу5стовский
Августо5вский
Августовски5й
Октя5брьский
Октябрьски5й
Янва5рь
Апре5ль
Апре5ля
Апреля5
Ию5нь
Ию5ньский
Июньски5й
В чем тут нюанс? | |
|
|
|
|
|
|
|
для: Владимир55
(03.06.2008 в 18:25)
| | Ньюанс в том, что заглавные буквы Вы перечислить забыли.
PS. Рассказали бы, зачем всё это может понадобиться.... на слоги так слова всё равно не делят... | |
|
|
|
|
|
|
|
для: Trianon
(03.06.2008 в 18:46)
| | Спасибо!
"Ньюанс в том, что заглавные буквы Вы перечислить забыли."
Точно!
В реале скрипт работает только с буквами нижнего регистра. Я сейчас отлаживаю сервис, и в примере об этом позабыл...
"PS. Рассказали бы, зачем всё это может понадобиться.... "
Если вкратце, то учу компьютер ощущать человеческие эмоции. Собственно, он это уже делает. Например, даёт эмоциональную оценку содержания стихотворения (без анализа значения слов).
В разделе "Разное" со временем можно будет об этом написать поподробнее. | |
|
|
|
|
|
|
|
для: Владимир55
(03.06.2008 в 19:28)
| | мне это напомнило старую шутку
читать с выражением!
Пушкин:
17 30 48
140 10 01
126 138
140 3 501
Маяковский:
2 46 38 1
116 14 20!
15 14 21
14 0 17
Есенин:
14 126 14
132 17 43...
16 42 511
704 83
170! 16 39
514 700 142
612 349
17 114 02
Веселые:
2 15 42
42 15
37 08 5
20 20 20!
7 14 и 100
2 00 13
37 08 5
20 20 20!
Грустные:
511 16
5 20 337
712 19
2000047 | |
|
|
|