|
|
|
| Здравствуйте!
Хочу использовать для разделения utf-8 строки на массив символов функцию mb_split, так как если применять str_split, то с латиницей и цифрами всё нормально, а вот из кириллицы получаются крокозябры (полагаю потому, что русские символы занимают больше одного байта, а порезка строки происходит побайтово, а не побуквенно).
Синтаксис функции из официальной документации следующий:
array mb_split ( string $pattern , string $string [, int $limit ] )
Split a multibyte string using regular expression pattern and returns the result as an array.
|
Проблема в том, что с регулярными выражениями я раньше не заморачивался и старался всячески их избегать, а теперь не могу составить этот самый $pattern чтобы строка порезалась именно по одному символу. Что ни попробую написать, всегда выплёвывает всю строку в первый же элемент массива. В общем, подскажите, пожалуйста, какую конструкцию надо использовать, при чём чтобы не выпадали ни пробелы, ни спецсимволы. То есть по умолчанию считаем, что передана в функцию может быть строка с любыми символами и все они должны без потерь попасть в массив. И если не сложно, то принцип построения этой конструкции - что зачем и почему.
Заодно буду благодарен, если подскажете что-нибудь написанное человеческим понятным языком на темы:
1) кодировок, их согласования, объявления и т.п. Хочу писать сайт сразу на unicode, чтобы при необходимости сделать иноязычный аналог траблов не возникало (уж лучше один раз в начале повозиться)
2) обработки мультибайтовых строк (это из первого следует)
3) регулярных выражений | |
|
|
|
|
|
|
|
для: Atreides
(05.01.2009 в 12:56)
| | Попробуй использовать preg_match.
Шас у ся попробую, если нада отпишусь...
Нет! Неполучилось...шаблон просто отказывается видеть кирилицу..
Поэксперементировать можно ЗДЕСЬ.
Эксперементировал дальше....если я тебя правильно понял, то тваю задачу можно решить обычным сплитом.Пример:
<?
$user_inf=file('user.txt');
for($i=0;$i<=count(';')+50;$i++)
{
list($user,$pass) = explode(';',$user_inf[$i]);
echo "$user<br>";
echo "$pass";
echo "<br><br>";
}
echo $user_log_and_pass[1];
?>
|
Но если у тебя строка, то ее нужно разбить!(хз чем, но если у тебя формат записи такой: чтототам1;чавототам1 чтототам2;чавототам2) в данном случае по пробелам...Код(стыренный):
<?
$user_inf=file('user.txt');
$text = "чтототам12323;чавототам1 чтототам2;чавототам2 чтототам123423;чавототам3 чтототам1554534533;чавототам1";
$abc = wordwrap($text, 40, "<br />", 10);
echo $abc ;
?> | |
|
|
|
|
|
|
|
для: Atreides
(05.01.2009 в 12:56)
| | Тоже столкнулся с регулярными выражениями в Php и кирилицей, кароче говоря не принимает пхп кирилицу, что я тока не пробовал, установка локали тоже не помогает | |
|
|
|
|
|
|
|
для: _deniska_
(05.01.2009 в 17:03)
| | А модификатор "u" для юникода пробовали? | |
|
|
|
|
|
|
|
для: Drago
(05.01.2009 в 17:21)
| | попробую | |
|
|
|
|
|
|
|
для: _deniska_
(05.01.2009 в 17:03)
| | Так я чето не совем понел проблему...
Вы не можете разделить строку из кириличных знаков?! | |
|
|
|
|
|
|
|
для: ДаньЧег
(05.01.2009 в 17:37)
| | Да, именно так. HTML файл идёт с заданной кодировкой unicode (utf-8), соответственно все строки, передаваемые в php-функции тоже идут в ней. Проблема в том, что если использовать конструкцию вида
$arr = str_split ($str, 1);
|
то цифры и латиница обрабатываются нормально, так как там по 1 байту на символ, а кириллица валится нафиг, так как там 2 байта на символ и эта функция распиливает каждую букву на две части.
Есть функция, которая должна делить нормально (см. первое сообщение), но у меня она почему-то не пашет, как я её ни вертел. | |
|
|
|
|
|
|
|
для: Atreides
(05.01.2009 в 18:18)
| | Ну вот, как вариант (не самый лучший наверное)
<?
preg_match_all("#.{1}#u",$str,$arr );
|
| |
|
|
|
|
|
|
|
для: Atreides
(05.01.2009 в 18:18)
| | А какие шаблоны Вы пробовали применить? | |
|
|
|
|
|
|
|
для: Atreides
(05.01.2009 в 18:18)
| | Чето я не понел! Почему мой вариант не подходит?! | |
|
|
|
|
|
|
|
для: ДаньЧег
(05.01.2009 в 21:06)
| | потому что Вы пытаетесь решать другую задачу. Похоже - свою собственную. | |
|
|
|
|
|
|
|
для: Trianon
(05.01.2009 в 21:33)
| | Чувствую себя блондинкой.....=/ | |
|
|
|