$search = 'вася'
$query = NULL;
for ($i = 0; $i < mb_strlen($search, "UTF-8"); $i++) {
for($j = 0; $j < mb_strlen($search, "UTF-8"); $j++) {
if($i == $j)
$query .= '_';
else
$query .= $search[$j];
}
$query .= '<br/>';
}
echo $query;
в результате выводит :
_�а
�_а
в_�
в�_
а мне нужно, чтоб выводило :
_ася
в_ся
ва_я
вас_
В чем может быть проблема?
Спустя 6 минут, 32 секунды (6.05.2011 - 13:29) linker написал(а):
А сам скрипт в какой кодировке сохранён?
Спустя 6 минут, 34 секунды (6.05.2011 - 13:35) forza написал(а):
Скрипт-файл .пхп сохранен в УТФ-8,
В пхп.ини тоже поставил default-charset = "utf-8"
P.S.
ну и конечно заголовок
header("Content-type:text/html; charset=utf-8");
Кстате, такой цикл не выводит не понятных символов, а вот вложенный уже да.
В пхп.ини тоже поставил default-charset = "utf-8"
P.S.
ну и конечно заголовок
header("Content-type:text/html; charset=utf-8");
Кстате, такой цикл не выводит не понятных символов, а вот вложенный уже да.
for ($i = 0; $i < mb_strlen($search, "utf-8"); $i++)
echo $search[$i].'<br />';
Спустя 18 минут, 8 секунд (6.05.2011 - 13:54) linker написал(а):
А ну да, вот такая бойда с utf-8 не проходит $search[$j];, напиши просто
echo $search[0];и получишь полную фигню. Символ "_" попадает между двумя байтами одного символа, от сюда и абракадабра.
Спустя 15 минут, 21 секунда (6.05.2011 - 14:09) forza написал(а):
Ммм, и я так понял, от этого уже никуда не деться и никак не исправить ?
Тогда подскажите, как из слова "вася" получить
_ася
в_ся
ва_я
вас_
как-нибудь по-другому ?
Тогда подскажите, как из слова "вася" получить
_ася
в_ся
ва_я
вас_
как-нибудь по-другому ?
Спустя 1 час, 2 минуты, 45 секунд (6.05.2011 - 15:12) linker написал(а):
Первое, что на ум пришло
$a = 'Вася';
$arr = preg_split('//u', $a, -1, PREG_SPLIT_NO_EMPTY);
$l = sizeof($arr);
for($i = 0; $i < $l; ++ $i)
{
for($j = 0; $j < $l; ++ $j)
echo $i == $j ? '_' : $arr[$j];
echo '<br>';
}
Спустя 4 минуты, 45 секунд (6.05.2011 - 15:16) forza написал(а):
linker , спасибо :) замечательно работает
Просто мне вот что пришло на ум, но я думаю мой вариант далеко не оптимальный
Просто мне вот что пришло на ум, но я думаю мой вариант далеко не оптимальный
for($i = 0; $i < mb_strlen($search, 'utf-8'); $i++) {
$var .= mb_substr($search, 0, $i, 'utf-8').'_'.mb_substr($search, $i+1,strlen($search), 'utf-8').'<br/>';
}
echo $var;
Спустя 35 минут, 41 секунда (6.05.2011 - 15:52) linker написал(а):
$len = mb_strlen($search, 'utf-8');Будет чуть быстрее работать.
$var = '';
for($i = 0; $i < $len; $i++)
$var .= mb_substr($search, 0, $i, 'utf-8').'_'.mb_substr($search, $i+1, $len, 'utf-8').'<br/>';
echo $var;
Спустя 1 час, 35 минут, 58 секунд (6.05.2011 - 17:28) forza написал(а):
Ого, честно говоря, не знал, что
быстрее чем.
Надо взять на заметку.
$len = mb_strlen($search, 'utf-8');
for($i = 0; $i < $len; $i++) ...
быстрее чем.
for($i = 0; $i < mb_strlen($search, 'utf-8'); $i++)
Надо взять на заметку.
Спустя 10 минут, 22 секунды (6.05.2011 - 17:38) Invis1ble написал(а):
forza
Так там на каждой итерации во втором варианте отрабатывает функция, поэтому и медленней
Так там на каждой итерации во втором варианте отрабатывает функция, поэтому и медленней
Спустя 1 минута, 46 секунд (6.05.2011 - 17:40) forza написал(а):
Ну вот, поэтому и возьму на заметку, а то раньше никогда не задумывался об этом. Всем спасибо за ответы, тему можно закрыть.
_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио