2010-02-19 10 views
19

पायथन का PHP के स्ट्रिप_टैग के बराबर है?पायथन का PHP के स्ट्रिप_टैग के बराबर है?

http://php.net/manual/en/function.strip-tags.php

+1

जांच इस http://code.activestate.com/recipes/52281/ –

+0

धन्यवाद गगनदीप। आप एक उत्तर पोस्ट कर सकते हैं और मैं इसे – Viet

उत्तर

32

अजगर मानक पुस्तकालय में ऐसी कोई चीज नहीं है। ऐसा इसलिए है क्योंकि पायथन एक सामान्य उद्देश्य भाषा है जबकि PHP वेब उन्मुख भाषा के रूप में शुरू हुआ है।

  • आप जल्दी में हैं: बस अपना खुद का बनाएँ

    फिर भी, आप 3 समाधान है। re.sub(r'<[^>]*?>', '', value) एक त्वरित और गंदे समाधान हो सकता है।

  • किसी तृतीय पक्ष लाइब्रेरी का उपयोग करें (अनुशंसित क्योंकि अधिक बुलेट प्रूफ): beautiful soup वास्तव में अच्छा है और इंस्टॉल करने के लिए कुछ भी नहीं है, बस lib dir और आयात की प्रतिलिपि बनाएँ। Full tuto with beautiful soup
  • एक ढांचे का उपयोग करें। अधिकांश वेब पायथन devs स्क्रैच से कोड कभी नहीं, वे django जैसे ढांचे का उपयोग करते हैं जो स्वचालित रूप से आपके लिए यह सामान करता है। Full tuto with django
+0

वोट दूंगा! मैं Django =) – Viet

+12

का उपयोग कर रहा हूं यदि Django का उपयोग कर रहा है: 'django.utils.html आयात स्ट्रिप_टैग्स – Hank

1

पायथन में एक अंतर्निहित नहीं है, लेकिन ungodly number of implementations हैं।

+0

असल में मैंने आपके द्वारा सुझाए गए एक ही प्रश्न के साथ गुगल किया लेकिन उनसे मुझे पर्याप्त खुश नहीं हुआ। – Viet

15

का उपयोग BeautifulSoup

from BeautifulSoup import BeautifulSoup 
soup = BeautifulSoup(htmltext) 
''.join([e for e in soup.recursiveChildGenerator() if isinstance(e,unicode)]) 
+0

आप उसे यह बताना चाहते हैं कि यह एक तृतीय पक्ष lib है। –

+0

हाँ, मुझे पता है, धन्यवाद :) – Viet

2

आप PHP एचटीएमएल कार्यों builtin के बाद से अजगर एक वेब विकास भाषा की तुलना में एक सामान्य प्रयोजन स्क्रिप्टिंग भाषा के अधिक है के लिए कई builtin पायथन समकक्ष नहीं मिलेगा। एचटीएमएल प्रोसेसिंग के लिए, BeautifulSoup आमतौर पर अनुशंसित किया जाता है।

1

मैंने HTMLParser क्लास का उपयोग करके पायथन 3 के लिए एक बनाया है। यह PHP की तुलना में अधिक verbose है। मैंने इसे HTMLCleaner क्लास कहा, और आप स्रोत here स्रोत पा सकते हैं और आप उदाहरण here देख सकते हैं।

1

इस के लिए एक सक्रिय राज्य नुस्खा है,

http://code.activestate.com/recipes/52281/

ताकि आप के रूप में टिप्पणी

यहाँ में उल्लेख किया HTMLparser ने SGML पार्सर बदलना होगा यह पुराने कोड है को बदल कोड है,

import HTMLParser, string 

class StrippingParser(HTMLParser.HTMLParser): 

    # These are the HTML tags that we will leave intact 
    valid_tags = ('b', 'a', 'i', 'br', 'p', 'img') 

    from htmlentitydefs import entitydefs # replace entitydefs from sgmllib 

    def __init__(self): 
     HTMLParser.HTMLParser.__init__(self) 
     self.result = "" 
     self.endTagList = [] 

    def handle_data(self, data): 
     if data: 
      self.result = self.result + data 

    def handle_charref(self, name): 
     self.result = "%s&#%s;" % (self.result, name) 

    def handle_entityref(self, name): 
     if self.entitydefs.has_key(name): 
      x = ';' 
     else: 
      # this breaks unstandard entities that end with ';' 
      x = '' 
     self.result = "%s&%s%s" % (self.result, name, x) 

    def handle_starttag(self, tag, attrs): 
     """ Delete all tags except for legal ones """ 
     if tag in self.valid_tags:  
      self.result = self.result + '<' + tag 
      for k, v in attrs: 
       if string.lower(k[0:2]) != 'on' and string.lower(v[0:10]) != 'javascript': 
        self.result = '%s %s="%s"' % (self.result, k, v) 
      endTag = '</%s>' % tag 
      self.endTagList.insert(0,endTag)  
      self.result = self.result + '>' 

    def handle_endtag(self, tag): 
     if tag in self.valid_tags: 
      self.result = "%s</%s>" % (self.result, tag) 
      remTag = '</%s>' % tag 
      self.endTagList.remove(remTag) 

    def cleanup(self): 
     """ Append missing closing tags """ 
     for j in range(len(self.endTagList)): 
       self.result = self.result + self.endTagList[j]  


def strip(s): 
    """ Strip illegal HTML tags from string s """ 
    parser = StrippingParser() 
    parser.feed(s) 
    parser.close() 
    parser.cleanup() 
    return parser.result 
3
from bleach import clean 
print clean("<strong>My Text</strong>", tags=[], strip=True, strip_comments=True) 
संबंधित मुद्दे