#1 2010.12.24 22:08

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Части текста

Можно пример текста как каждые три-пять знаков через три-пять знаков текста выделять каким-нибудь тегом. Например <b>.
Т.е. текст "Пример некоторого текста" должен стать:
При<b>мер</b> каког<b>ото </b>тек<b>ста.</b>
Что-то никак не сделаю...

Неактивен

#2 2010.12.24 22:18

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6594
Карма: 107
Профиль Веб-сайт

Re: Части текста

ну, в примере не прослеживается четкой последовательности, когда 3, когда 5?
а так с ходу - получай массив символов через str_split и с ним работай.

Неактивен

#3 2010.12.24 22:51

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Части текста

Никакой последовательности и нет.. Сейчас попробую
Добавлено спустя    59 секунд:
Кстати, кириллический текст после str_split в квадратики превращается у меня почему-то

Неактивен

#4 2010.12.24 23:54

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6594
Карма: 107
Профиль Веб-сайт

Re: Части текста

эм... да... тогда не str_split, а preg_match('//u', $str);

Неактивен

#5 2010.12.25 14:56

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Части текста

Можешь показать как выбрать несколько символов?

Неактивен

#6 2010.12.25 15:47

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6594
Карма: 107
Профиль Веб-сайт

Re: Части текста

что значит "выбрать"?

Неактивен

#7 2010.12.25 16:00

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Части текста

Ну, сделать то что нужно мне)
Не вдуплился что-то как с помощью preg_match сделать это:

При<b>мер</b> каког<b>ото </b>тек<b>ста.</b>

Неактивен

#8 2010.12.25 19:52

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6594
Карма: 107
Профиль Веб-сайт

Re: Части текста

DarkDaNTe, пока не будет жесткой логики в каком случае 3, а в каком 5 символов, никакого алгоритма придумать нельзя, т.к. мы изначально не знаем какой должен быть результат.

Неактивен

#9 2010.12.25 20:19

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Части текста

Пусть всегда будет через три символа.

Неактивен

#10 2010.12.25 21:27

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6594
Карма: 107
Профиль Веб-сайт

Re: Части текста

Код:

1
span style="color: #0000BB"><?phpclass Splitter{ const BOLD = 'b'; const ITALIC = 'i'; const UNDERLINE = 'u'; private $_str; /** * Строка для разбора * * @param string $str */ public function __construct ($str) { $this->_str = $this->_unicodeSplitter($str); } /** * Получаем результат работы сплиттера * * @param int $length * @param string $pattern * @return string */ public function get ($length, $pattern = self::BOLD) { $pattern = array('<' . $pattern . '>', '</' . $pattern . '>'); $out = ''; $iterator = 0; $patternIterator = false; foreach ($this->_str as $v) { if ($iterator == $length) { $iterator = 1; $out .= $pattern[(int)$patternIterator] . $v; $patternIterator = !$patternIterator; } else { $iterator++; $out .= $v; } } return $out; } /** * str_split с поддержкой юникода * * @param string $str * @return array */ private function _unicodeSplitter ($str) { $out = preg_split('//u', $str); unset($out[0]); end($out); unset($out[key($out)]); return $out; }}

пример использования smile

Код:

1
span style="color: #0000BB"><?php$obj = new Splitter('Пример некоторого текста');echo $obj->get(3, Splitter::BOLD);

Отредактировано Gemorroj (2010.12.26 20:42)

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.011 s