Форумы: Помощь:

Нужно из блока взять первые 10 символов



var date = d.getElementsByAttr("h4", "class" , "date")[0];

Из того, что выдается нужно взять только первые 10 символов, остальное обрезать, как это сделать?
var someText = "0123456789-этого текста не будет видно";
someText = someText.substring(0,10);
article.body = someText + article.body;

Спасибо большое , я уже дошел правда своим умом, можно еще вопрос, практически в ту же тему.
Я к сожалению, не программист, потому - это составляет определенную сложность, дохожу методом проб и ошибок.

Вот есть у меня такой хтмл

<div id="full-text">
<div id="adsense_singlepost_top_square">
<script type="text/javascript"><!--
google_ad_client = "pub-0378951137522757";
/* 336x280 (43region top) */
google_ad_slot = "6803771209";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Губернатор Никита Белых не против усыновления за рубеж. Об этом он сообщил сегодня в очередном выпуске «Дневника губернатора» на радио «Эхо Москвы». По словам Никиты Юрьевича, задача государства – обеспечить ребенку возможность жить в полноценной, любящей семье, а уж где она проживает – дело второе.<br><br> - Я не вижу глобальной беды, связанной с тем, что усыновляют иностранцы. Главное, понять, какие мы цели преследуем. Мы хотим, чтобы попал в нормальную семью. Иностранные усыновители более толерантные....блаблабла <br></p><br></div>

Делаю следующее

var d = new Document(article.url, channel.encoding);
var text = d.getElementsByAttr("div", "id" , "full-text")[0];
article.body =text.innerHTML;

Соответственно, все бы нормально, но вот как вырезать из результата мусор, который находится в блоке <div id="adsense_singlepost_top_square">
Сам этот блок мне не нужен.
Можно только пояснить (как для ребенка)? Меня интересует технология , метод, которым можно вырезать что-то находящееся от и до (включительно). Или вырезать например, определенные теги из текста, вместе с их содержимым.
Или ткните носом туда, где это можно рассмотреть на живых примерах? Еще лучше учебник посоветуйте :) Спасибо, заранее!!!
Это довольно частая проблема - вырезать мусор из текста новости. Обычно это решается так: выбирается элемент, содержащий в себе новость (с ненужным текстом, как у вас в переменной text), а затем в цикле перебираются его "дети" (в вашем случае это будут элементы div, p, br). Для текста конечной новости (article) отбираются только необходимые дети (вы, например, знаете, что если элемент - div c id= adsense_singlepost_top_square, то это реклама и включать этот элемент в новость не нужно). В итоге получиться что-то вроде:
article.body = "";
var d = new Document(article.url, channel.encoding);
var textNode = d.getElementsByAttr("div", "id" , "full-text")[0];
for (var n in textNode.childNodes){
	if(n.nodeName == "p") // будем включать только p
		article.body += n.outerHTML;
}

Живой пример - http://rss-farm.ru/channels/Ablazen/TheCompulenta
Ага я примерно так и попробовал сделать, там было проще, весь материал был в одном теге <p> сразу после рекламы, но потом обнаружил, что в некоторых материал тег <P> тупо отсутствовал. Я беру ленту с парсера (судя по всему) нескольких сайтов. http://43region.com/desc/?rss=1 И статьи у них могут отличаться по внутреннему содержанию
http://feeds.rss-farm.ru/satdata/43region - канал несколько специфический, я оптимизировал под личные цели, надеюсь правила это не запрещают?
Делал методом проб и ошибок, так что сильно не ругайте :)

<?xml version="1.0" encoding="utf-8"?><Template type="ScriptUpdater"><Url>http://43region.com/desc/?rss=1</Url><Title>43region</Title><Description>канал мониторинга</Description><Encoding>windows-1251</Encoding><UserAgent></UserAgent><ChannelTemplate><![CDATA[]]></ChannelTemplate><ArticleTemplate><![CDATA[var d = new Document(article.url, channel.encoding);
var text = d.getElementsByAttr("div", "id" , "full-text")[0];
var url = d.getElementsByAttr("p", "class" , "noprint")[0];
var date = d.getElementsByAttr("h4", "class" , "date")[0];
var title = ((d.getElementsByAttr("div", "id" , "content-inner")[0]).getElementsByTagName("h1"))[0];
article.body ='<table width="100%" border="1px"><tr><td valign="top" width="20px">' + date.innerHTML.substring(0, 10) + '</td><td valign="top" width="100px">' + url.innerHTML + '</td><td valign="top" width="100px">' + title.innerHTML + '</td><td valign="top">' + text.innerHTML + '</td></tr></table>';
article.body = article.body.replace('<i>Оригинал <a href="',' ')
article.body = article.body.replace('" target="_blank">здесь',' ')
]]></ArticleTemplate><IsRSSBased>True</IsRSSBased></Template>

Соответственно у меня было 3 мысли в этом отношении:
1) брать весь материал внутри full-text после определенной последовательности символов
2) вырезать все содержащееся в определенных тегах.
3) вырезать все от определенной последовательности символов и до определенной последовательности символов
сегодня еще дошел до мысли использовать innerText вместо innerHTML - решает кучу проблем, рисунки мне не нужны - только текст, я мониторингом занимаюсь на общественных началах, но, к сожалению, разрывы абзацев тоже исчезают