Вы не зашли.
Главная » PHP » Части текста
#1. DarkDaNTe Off (11)
Участник
2010.12.24 22:10
Можно пример текста как каждые три-пять знаков через три-пять знаков текста выделять каким-нибудь тегом. Например <b>.
Т.е. текст "Пример некоторого текста" должен стать:
При<b>мер</b> каког<b>ото </b>тек<b>ста.</b>
Что-то никак не сделаю...
#2. Gemorroj Off (107)
Administrator
2010.12.24 22:10
ну, в примере не прослеживается четкой последовательности, когда 3, когда 5?
а так с ходу - получай массив символов через str_split и с ним работай.
#3. DarkDaNTe Off (11)
Участник
2010.12.24 22:10
Никакой последовательности и нет.. Сейчас попробую
Добавлено спустя    59 секунд:
Кстати, кириллический текст после str_split в квадратики превращается у меня почему-то
#4. Gemorroj Off (107)
Administrator
2010.12.24 23:11
эм... да... тогда не str_split, а preg_match('//u', $str);
#5. DarkDaNTe Off (11)
Участник
2010.12.25 14:02
Можешь показать как выбрать несколько символов?
#6. Gemorroj Off (107)
Administrator
2010.12.25 15:03
что значит "выбрать"?
#7. DarkDaNTe Off (11)
Участник
2010.12.25 16:04
Ну, сделать то что нужно мне)
Не вдуплился что-то как с помощью preg_match сделать это:
При<b>мер</b> каког<b>ото </b>тек<b>ста.</b>
#8. Gemorroj Off (107)
Administrator
2010.12.25 19:07
DarkDaNTe, пока не будет жесткой логики в каком случае 3, а в каком 5 символов, никакого алгоритма придумать нельзя, т.к. мы изначально не знаем какой должен быть результат.
#9. DarkDaNTe Off (11)
Участник
2010.12.25 20:08
Пусть всегда будет через три символа.
#10. Gemorroj Off (107)
Administrator
2010.12.25 21:09
Код:
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
Код:
span style="color: #0000BB"><?php$obj = new Splitter('Пример некоторого текста');echo $obj->get(3, Splitter::BOLD);
Отредактировано Gemorroj (2010.12.26 20:08)
#11. DarkDaNTe Off (11)
Участник
2010.12.25 21:09
В результате получается:
Приер екоороо ткст
#12. Gemorroj Off (107)
Administrator
2010.12.25 22:10
поправил
#13. DarkDaNTe Off (11)
Участник
2010.12.25 23:11
Спасибо тебе, добрый человек))
Страниц: 1 2 Все
Главная
WEB
PunBB Mod v0.6.2
0.016 s