PDA

View Full Version : پاک کردن تگهای html از متن خبر



jasadeghi
دوشنبه 02 مهر 1386, 11:55 صبح
دروود به تمامی دوستان

من در بخش اخبار سایت 700 کلمه اول خبر رو به عنوان خلاصه خبر نمایش میدم.

میخوام تگهای اون نوشته ها رو از text جدا کنم.

به عنوان :



<p dir="rtl"><b><font color="#800000" size="4">نعمت‌الله کیکاوسی</font> در گفت‌وگو
با خبرنگار بخش<font color="#008000"> میراث فرهنگی</font> خبرگزاری دانشجویان
ایران<font color="#000080"> (ایسنا)</font>، فاصله‌ی 15 تا 20 متری مکان ثابت
برگزاری <font color="#800000">کنسرت</font>‌ها و جشن‌ها را با نزدیک‌ترین کاخ که
کاخ ملت است، فاصله‌ی مناسبی دانست و افزود:‌ این مقدار فاصله بروز هر مشکلی را از
میان می‌برد. </b></p>


تبدیل بشه به



نعمت‌الله کیکاوسی در گفت‌وگو با خبرنگار بخش میراث فرهنگی خبرگزاری دانشجویان ایران (ایسنا)، فاصله‌ی 15 تا 20 متری مکان ثابت برگزاری کنسرت‌ها و جشن‌ها را با نزدیک‌ترین کاخ که کاخ ملت است، فاصله‌ی مناسبی دانست و افزود:‌ این مقدار فاصله بروز هر مشکلی را از میان می‌برد.


آیا برای همچین کاری function ی و یا برنامه javaScrip ی، ... چیزی وجود داره؟

با سپاس فراوان

mp2009
دوشنبه 02 مهر 1386, 12:14 عصر
منم همین مشکل رو دارم
اگه میخواه فقط نمایش بده باید توی grideview یه دونه Template Item رو اظافه کنی و بهد داخل اون یه دونه lable بزاری خود لیبل اتوماتیک نشونمیده نوشترو
موفق باشی

web developer
دوشنبه 02 مهر 1386, 12:20 عصر
سلام

این مقاله رو بخون به دردت میخوره:

http://www.codeproject.com/asp/removehtml.asp

اگر هم Tag هایی که می خوای حذف کنید ثابت هستند میتونید از Replace استفاده کنید.



strText = strText.Replace("</font>","")


موفق باشید.

jasadeghi
سه شنبه 03 مهر 1386, 08:51 صبح
دروود

اون function که دنبالش بودم و با راهنمای جناب web developer (http://barnamenevis.org/forum/member.php?u=44595) پیداش کردم اینه.


Function RemoveHTML( strText )
Dim TAGLIST
TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BAS EFONT;" &_
"BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENT ER;CITE;CODE;" &_
"COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;E MBED;FIELDSET;" &_
"FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR ;HTML;I;IFRAME;IMG;" &_
"INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;L ISTING;MAP;MARQUEE;" &_
"MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION; P;PARAM;PLAINTEXT;" &_
"PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRON G;STYLE;SUB;SUP;" &_
"TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT ;U;UL;VAR;WBR;XMP;"
Const BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJE CT;SCRIPT;STYLE;"

Dim nPos1
Dim nPos2
Dim nPos3
Dim strResult
Dim strTagName
Dim bRemove
Dim bSearchForBlock

nPos1 = InStr(strText, "<")
Do While nPos1 > 0
nPos2 = InStr(nPos1 + 1, strText, ">")
If nPos2 > 0 Then
strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")
nPos3 = InStr(strTagName, " ")
If nPos3 > 0 Then
strTagName = Left(strTagName, nPos3 - 1)
End If

If Left(strTagName, 1) = "/" Then
strTagName = Mid(strTagName, 2)
bSearchForBlock = False
Else
bSearchForBlock = True
End If

If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
bRemove = True
If bSearchForBlock Then
If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
nPos2 = Len(strText)
nPos3 = InStr(nPos1 + 1, strText, "</" & strTagName, vbTextCompare)
If nPos3 > 0 Then
nPos3 = InStr(nPos3 + 1, strText, ">")
End If

If nPos3 > 0 Then
nPos2 = nPos3
End If
End If
End If
Else
bRemove = False
End If

If bRemove Then
strResult = strResult & Left(strText, nPos1 - 1)
strText = Mid(strText, nPos2 + 1)
Else
strResult = strResult & Left(strText, nPos1)
strText = Mid(strText, nPos1 + 1)
End If
Else
strResult = strResult & strText
strText = ""
End If

nPos1 = InStr(strText, "<")
Loop
strResult = strResult & strText

RemoveHTML = strResult
End Function


با تشکر

maxpayn2
سه شنبه 03 مهر 1386, 11:52 صبح
سلام
اگه درست فهمیده باشم شما میخواین تمام تگ های HTML رو حذف کنید ، اگه بخوایم در یک صفحه قسمت های خاصی رو حذف کنیم ( HTML ، متن و ... ) و قسمت های دیگه باقی بمونه باید چی کار کنیم ؟

sama01
سه شنبه 03 مهر 1386, 12:02 عصر
من چنین کاری کردم. اول چک می‌کنم که آیا بیش از حد مجاز هست یا نه و اگر بود، cut می‌کنم:


Protected Function myCut(ByVal Text As String, ByVal length As Integer)
If Text.Length < length Then
Return Text
Else
Return Left(Text, length - 4) + " ..."
End If
End Function

----------------
<asp:Label ID="Label1" runat="server" Text='<%# myCut(Eval("comments"),700) %>'/>

web developer
سه شنبه 03 مهر 1386, 12:18 عصر
سلام
اگه درست فهمیده باشم شما میخواین تمام تگ های HTML رو حذف کنید ، اگه بخوایم در یک صفحه قسمت های خاصی رو حذف کنیم ( HTML ، متن و ... ) و قسمت های دیگه باقی بمونه باید چی کار کنیم ؟

برای این کار در Function پست شماره 4 تگ هایی که نمیخوای حذف بشن رو باید از متغیر Taglist حذف کنید.

موفق باشید.

maxpayn2
سه شنبه 03 مهر 1386, 13:10 عصر
برای این کار در Function پست شماره 4 تگ هایی که نمیخوای حذف بشن رو باید از متغیر Taglist حذف کنید.

موفق باشید.

با حذف تگ از Taglist کل تگ هایی که در Taglist نیستن باقی میمونه ، من میخوام مثلا در 4 خط اول تگ فونت و محتویاتش حذف بشه نه در تمام خط ها ، ببین اصل موضوع اینه که من با کمک اقای راد یک کد نوشتم که با اون توسط سایت خودم تو گوگل سرچ میکنم ، گوگل یک صفحه HTML بر میگردونه که لوگوی خودش و یه سری چیز های دیگه غیر از نتایج سرچ توش هست ، من میخوام فقط اونا حذف بشه

Behrouz_Rad
سه شنبه 03 مهر 1386, 13:50 عصر
با حذف تگ از Taglist کل تگ هایی که در Taglist نیستن باقی میمونه ، من میخوام مثلا در 4 خط اول تگ فونت و محتویاتش حذف بشه نه در تمام خط ها
تشخیص الگوی پردازشی صفحات که در برخی سیستم ها پیاده سازی میشه، توسط عامل هوشمند تشخیص و پیاده سازی میشه.
اون عامل هوشمند نیز انسان است.
خروجی HTML دریافتی رو باید بر اساس نیازت آنالیز کنی. ابزارهایی و راه هایی که در این پست ارائه شده خوب هستند اما باید بنا به نیاز خودت و ساختار HTML ای که پیش روت هست، نیازت رو پیاده سازی کنی.

موفق باشید.

web developer
سه شنبه 03 مهر 1386, 13:51 عصر
با حذف تگ از Taglist کل تگ هایی که در Taglist نیستن باقی میمونه ، من میخوام مثلا در 4 خط اول تگ فونت و محتویاتش حذف بشه نه در تمام خط ها ، ببین اصل موضوع اینه که من با کمک اقای راد یک کد نوشتم که با اون توسط سایت خودم تو گوگل سرچ میکنم ، گوگل یک صفحه HTML بر میگردونه که لوگوی خودش و یه سری چیز های دیگه غیر از نتایج سرچ توش هست ، من میخوام فقط اونا حذف بشه

برای این کار باید از RegEx یا همون Regular Expression استفاده کنی.

در مورده این کلمه سرچ کن.

موفق باشید.

hamed_bostan
سه شنبه 03 مهر 1386, 14:08 عصر
:گیج:یه راه حل خفن:گیج:
بعضی ادیتور ها هستم که هم متن html رو بهت میدن و هم متن بدون html رو :



radeditor.text
radeditor.html

خوب میتونی اون ادیتور رو توی صفحه ات به صورت Invisible داشته باشی و بعد :



me.radeditor.html=htmltext
cleartext=me.radeditor.text
:قهقهه:

maxpayn2
سه شنبه 03 مهر 1386, 14:27 عصر
تشخیص الگوی پردازشی صفحات که در برخی سیستم ها پیاده سازی میشه، توسط عامل هوشمند تشخیص و پیاده سازی میشه.
اون عامل هوشمند نیز انسان است.
خروجی HTML دریافتی رو باید بر اساس نیازت آنالیز کنی. ابزارهایی و راه هایی که در این پست ارائه شده خوب هستند اما باید بنا به نیاز خودت و ساختار HTML ای که پیش روت هست، نیازت رو پیاده سازی کنی.

موفق باشید.
میشه بیشتر توضیح بدین لطفا



بعضی ادیتور ها هستم که هم متن html رو بهت میدن و هم متن بدون html رو :

فکر کنم منظورم رو درست متوجه نشدین ( البته اگه جواب من رو دادین ) ، من نمیخوام همه HTML ها از بین بره

Hope22
یک شنبه 06 مرداد 1387, 11:53 صبح
خوب چیزی که دوستمون web developer داده خوبه ولی برای vb هست
منم یه آدرس میذارم برای #c کارا
http://www.codeproject.com/KB/HTML/HTML_to_Plain_Text.aspx

mrsaberi
یک شنبه 06 مرداد 1387, 18:08 عصر
در جاوا اسکریپت می توانی با ایجاد یک Editor RichText این مشکل رو حل کنی نمونه تبدیل بصورت ذیل است:
نعمت‌الله کیکاوسی در گفت‌وگو با خبرنگار بخش میراث فرهنگی خبرگزاری دانشجویان ایران (ایسنا)، فاصله‌ی 15 تا 20 متری مکان ثابت برگزاری کنسرت‌ها و جشن‌ها را با نزدیک‌ترین کاخ که کاخ ملت است، فاصله‌ی مناسبی دانست و افزود:‌ این مقدار فاصله بروز هر مشکلی را از میان می‌برد.