То есть чтобы после пробела счет заново начинался.
Спустя 1 час, 27 минут, 28 секунд (5.05.2010 - 17:15) Han написал(а):
Например вот так
<?php
$string="Вася Пупов пьёт пиво!";
for ($i=0; $i<strlen($string); $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
Спустя 20 минут, 20 секунд (5.05.2010 - 17:35) WebClass написал(а):
И что он выводит?
Мне бы еще сделать, что если в этом поле символов больше 20 и там нет пробела и нажатия ентера то выводить ошибку
Мне бы еще сделать, что если в этом поле символов больше 20 и там нет пробела и нажатия ентера то выводить ошибку
Спустя 16 минут, 50 секунд (5.05.2010 - 17:52) Han написал(а):
Ну скажем для того чтобы понять что он выводит нужно этот код запустить, а выводит он количество символов до пробела и каждый раз с новой строки.
Цитата |
Мне бы еще сделать, что если в этом поле символов больше 20 и там нет пробела и нажатия ентера то выводить ошибку |
Во первых в каком поле? Во вторых попробуйте сами хотя бы попытаться написать то что вы хотите!
Могу подсказать. Разберайте формы, условный оператор if. перевод строки обозначается \n
Спустя 5 минут, 34 секунды (5.05.2010 - 17:57) WebClass написал(а):
Ну вывел он
8
10
8
9
из текста Вася Пупов пьёт пиво!
Неужели в слове Вася 8 символов?
8
10
8
9
из текста Вася Пупов пьёт пиво!
Неужели в слове Вася 8 символов?
Спустя 5 минут, 14 секунд (5.05.2010 - 18:03) Han написал(а):
Ага вот изза этого я лихорадочно ищю тему про функцию strlen(). Как обьяснялось она возвращает не количество символов а конкретно количество байтов в коде. Русский текст определяется как многобайтный и считает каждый символ алфавита как 2 байта. В этом случае нужно использовать функцию mb_strlen().
http://phpforum.ru/index.php?showtopic=28515&hl=strlen
http://phpforum.ru/index.php?showtopic=28515&hl=strlen
Спустя 25 минут, 33 секунды (5.05.2010 - 18:28) WebClass написал(а):
Сделал так
все равно не правильно выводится, выводит просто
10
7
А так
Все нормально выводит.
<?php
$string='текст просто текст';
for ($i=0; $i<mb_strlen($string, 'utf-8'); $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
все равно не правильно выводится, выводит просто
10
7
А так
<?php
$str = 'текст просто текст';
echo mb_strlen($str, 'utf-8');
?>
Все нормально выводит.
Спустя 18 минут, 55 секунд (5.05.2010 - 18:47) Han написал(а):
Так должно работать.
<?php
$string='текст просто текст';
$string mb_convert_encoding ($string, "Windows-1251", "UTF-8")
for ($i=0; $i<strlen($string); $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
Спустя 4 минуты, 4 секунды (5.05.2010 - 18:51) WebClass написал(а):
Ошибка
Parse error: syntax error, unexpected T_STRING
Parse error: syntax error, unexpected T_STRING
Спустя 19 минут, 9 секунд (5.05.2010 - 19:10) Han написал(а):
Чесно говоря не знаю как тебе помочь потому что в скрипт
должен чётко работать. В мануале чётко написано что функция mb_strlen возвращает количество символов учитывая указанную кодировку. А например
<?php
$string='текст просто текст';
for ($i=0; $i<mb_strlen($string, 'utf-8'); $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
должен чётко работать. В мануале чётко написано что функция mb_strlen возвращает количество символов учитывая указанную кодировку. А например
$string mb_convert_encoding ($string, "Windows-1251", "UTF-8")Должна менять кодировку строки. попробуй подставить вместо UTF-8 - UTF-16-UTF-32
Спустя 2 минуты, 35 секунд (5.05.2010 - 19:13) WebClass написал(а):
Все равно ошибка
Спустя 3 минуты, 44 секунды (5.05.2010 - 19:17) Han написал(а):
Дело в том что у мну всё нормально работает и я не могу потестить скрипт. Попробуй повыводить в скрипте переменную $st во время работы цыкла. Так можно будет понять в чём ошибка и вообще и вообще почему выводить
10
7
НАпиши что получилось
10
7
<?php
$string='текст просто текст';
$string mb_convert_encoding ($string, "Windows-1251", "mb_internal_encoding()")
for ($i=0; $i<strlen($string); $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
echo mb_internal_encoding();
?>
НАпиши что получилось
Спустя 1 минута, 49 секунд (5.05.2010 - 19:18) WebClass написал(а):
Ошибка тут
Прописал, вот:
$string mb_convert_encoding ($string, "Windows-1251", "UTF-8")
Прописал, вот:
ISO-8859-110
12
10
Спустя 8 минут, 13 секунд (5.05.2010 - 19:27) WebClass написал(а):
Написал такая же ошибка
Parse error: syntax error, unexpected T_STRING
Parse error: syntax error, unexpected T_STRING
Спустя 10 минут, 28 секунд (5.05.2010 - 19:37) Han написал(а):
Ошибка тут
$string mb_convert_encoding ($string, "Windows-1251", "UTF-8")
Уже понял у тебя внутреняя кодировка ISO-8859-110. А я попытался изменить UTF-8 которая тут непричём + ISO-8859-110 - это не многобайтовая кодировка походу
Теперь пробуй эти 3 скрипта по очереди
и
$string mb_convert_encoding ($string, "Windows-1251", "UTF-8")
Уже понял у тебя внутреняя кодировка ISO-8859-110. А я попытался изменить UTF-8 которая тут непричём + ISO-8859-110 - это не многобайтовая кодировка походу
Теперь пробуй эти 3 скрипта по очереди
<?php
$string='текст просто текст';
for ($i=0; $i<mb_strlen($string, 'mb_internal_encoding()'); $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
<?php
$string='текст просто текст';
for ($i=0; $i<mb_strlen($string, 'ISO-8859-110'); $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
и
<?php
$string='текст просто текст';
convert_cyr_string($string, "i", "w");
for ($i=0; $i<strlen($string); $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
Спустя 13 минут, 41 секунда (5.05.2010 - 19:51) WebClass написал(а):
1 скрипт - ошибка
2 скрипт - ошибка
3 скрипт - вывел:
10
12
10
2 скрипт - ошибка
3 скрипт - вывел:
10
12
10
Спустя 11 часов, 41 минута, 15 секунд (6.05.2010 - 07:32) WebClass написал(а):
Сделал так:
Выводит правильно, 21 только выводит вместе с пробелами.
Как бы исправить?
<?php
$string="Вася Пупов пьёт пиво!";
$str = mb_strlen($string,'utf-8');
for ($i=0; $i<$str; $i++)
{
if ($str[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
Выводит правильно, 21 только выводит вместе с пробелами.
Как бы исправить?
Спустя 3 дня, 2 часа, 1 минута, 16 секунд (9.05.2010 - 09:33) Han написал(а):
Цитата (WebClass @ 6.05.2010 - 04:32) |
Сделал так:<?php Выводит правильно, 21 только выводит вместе с пробелами. Как бы исправить? |
Смотри. Дело в том, что ты присвоил переменной $str количество символов в строке учитывая юникод и в этой же переменной ищешь пробел
Спустя 22 минуты, 8 секунд (9.05.2010 - 09:55) Han написал(а):
Этот код должен работать
Но видимо если строка в юникоде то к любому символу строки обратиться нельзя так же как в обычной кодировке так что будем пробовать переводить кодировку в нормальную. У меня просто не работают многобайтовые функции и поэтому я пишу тебе в слепую так бы уже давно написал, а так тестить код свой не могу.
В общем пробуй вот так
<?php
$string='текст просто текст';
$str=mb_strlen($string, 'utf-8');
for ($i=0; $i<$str; $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
Но видимо если строка в юникоде то к любому символу строки обратиться нельзя так же как в обычной кодировке так что будем пробовать переводить кодировку в нормальную. У меня просто не работают многобайтовые функции и поэтому я пишу тебе в слепую так бы уже давно написал, а так тестить код свой не могу.
В общем пробуй вот так
<?php
$string='текст просто текст';
$string=utf8_decode($string);
$str=strlen($string);
for ($i=0; $i<$str; $i++)
{
if ($string[$i] !== " " ) ++$st;
else
{
echo $st."<br>";
$st=0;
}
}
echo $st;
?>
Спустя 1 день, 23 часа, 2 секунды (11.05.2010 - 08:55) WebClass написал(а):
Спасибо!! Все работает!