Форум → Программирование → PHP для идиотов → Первых N слов из текста с html разметкой. Как?
Первых N слов из текста с html разметкой. Как?
Страницы: ← Следующая страница →
-
Авг. 22, 2009, 1:17 п.п., спустя 32 минуты 46 секунд
попробуй phpQueryhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Авг. 22, 2009, 9:09 п.п., спустя 7 часов 51 минуту 37 секунд
блин, это ж целая библиотека, мнебы попроще что-то. Да и я не представляю как ней можно сделать, то что я хочу. -
Авг. 22, 2009, 9:30 п.п., спустя 20 минут 50 секунд
Давай так:
$html = "тут разметка и текст";
$text = strip_tags($html);
$words = //взять 50 слов
$lastWord = substr($words, strrpos($words, ' '));
echo substr($html, 0, strpos($words, $lastWord));Спустя 58 сек.я так, просто по ходу накалякал, надо еще проверять совпадающие имена и тд… короче у меня такой задачи не было, решения тоже нетhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Авг. 22, 2009, 9:31 п.п., спустя 1 минуту 12 секунд
adw0rd, пытаюсь в мозге выполнить, хуйня с вид какая то … )Сапожник без сапог -
-
Авг. 22, 2009, 9:42 п.п., спустя 7 минут 47 секунд
это 50 слов )
adw0rd, а в $words что? я думал к-во словСпустя 33 сек.
с виду примитивный алгоритм, который не защищен от дубляжей "вася хуй вася"
adw0rd, пытаюсь в мозге выполнить, хуйня с вид какая то … )https://smappi.org/ - платформа по созданию API на все случаи жизни -
Авг. 22, 2009, 11:45 п.п., спустя 2 часа 2 минуты 41 секунду
да, в этом и проблема, что слова могут повторяться и оно может вставить тупо в первое попавшееся слово, хотя на самом деле нужно в другом месте. Для меня нерешаемая задача)) Я пока просто обрезаю вместе с тегами, а потом недостающие теги закрываю через htmlpurifier. -
Авг. 25, 2009, 10:39 п.п., спустя 2 дня 22 часа 54 минуты
а если водтак//исходная строка с хтмл
$html='<div>Have a question about <b>Firefox</b>? Search. Search the Knowledge Base or check out the <i>tutorials and reference</i> articles below.</div>';
//допустим 50е слово - слово "сёрч".
$word='Search';
$from=0;
for($i=0;$i<substr_count(strip_tags($html),$word);$i++){
$lastWordPos = strpos($html, $word, $from);
$from=$lastWordPos+1;
}
//позиция 50го слова в строке с хтмл
echo $lastWordPos; //выводит "51" -
-
Авг. 25, 2009, 10:51 п.п., спустя 6 минут 35 секунд
только наверное не будет работать если в тэге "50е" слово встречается -
-
Авг. 25, 2009, 11:27 п.п., спустя 23 часа 24 минуты 24 секунды
upd:$words = preg_split('#\s+#s', trim($text));
$result = array();
foreach ($words as $word)
{
if (!preg_match('#^<[^>]+>$#', $word))
{
$result[] = $word;
}
}
echo implode(' ', array_slice($result, 0, COUNT)); -
-
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!