Python';s相当于PHP';什么是脱衣舞标签?

Python';s相当于PHP';什么是脱衣舞标签?,php,python,strip,Php,Python,Strip,Python相当于PHP的strip_标记 Python标准库中没有这样的东西。这是因为Python是一种通用语言,而PHP最初是一种面向Web的语言 不过,您有3种解决方案: 你赶时间,自己做吧re.sub(r']*?>','',value)可以是一个快速而肮脏的解决方案 使用第三方库(推荐使用,因为它更加防弹):这是一个非常好的库,并且没有什么可安装的,只需复制lib dir并导入即可 使用框架。大多数Web Python开发人员从不从头开始编写代码,他们使用的框架可以自动为您完成这些工作

Python相当于PHP的strip_标记


Python标准库中没有这样的东西。这是因为Python是一种通用语言,而PHP最初是一种面向Web的语言

不过,您有3种解决方案:

  • 你赶时间,自己做吧
    re.sub(r']*?>','',value)
    可以是一个快速而肮脏的解决方案
  • 使用第三方库(推荐使用,因为它更加防弹):这是一个非常好的库,并且没有什么可安装的,只需复制lib dir并导入即可
  • 使用框架。大多数Web Python开发人员从不从头开始编写代码,他们使用的框架可以自动为您完成这些工作
      Python没有内置的,但是有一个。

      使用


      对于内置PHP HTML函数,您不会发现很多内置Python等价物,因为Python更像是一种通用脚本语言,而不是一种web开发语言。对于HTML处理,通常建议使用

      我使用HTMLParser类为python3构建了一个。它比PHP更冗长。我称之为HTMLCleaner类,您可以找到源代码,也可以找到示例。

      这有一个活动状态配方

      这是旧代码,因此您必须将sgml解析器更改为HTMLparser,如注释中所述

      这是修改后的代码

      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
      
      导入HTMLPasser,字符串
      类StrippingParser(HTMLParser.HTMLParser):
      #这些是我们将保持不变的HTML标记
      有效的_标签=('b','a','i','br','p','img')
      从htmlentitydefs导入entitydefs#从sgmllib替换entitydefs
      定义初始化(自):
      HTMLParser.HTMLParser.\uuuuu初始化(self)
      self.result=“”
      self.endTagList=[]
      def句柄_数据(自身、数据):
      如果数据:
      self.result=self.result+数据
      def handle_charref(自身,名称):
      self.result=“%s&#%s;”%(self.result,name)
      def handle_entityref(自身,名称):
      如果self.entitydefs.具有\u键(名称):
      x=';'
      其他:
      #这打破了以“;”结尾的非标准实体
      x=''
      self.result=“%s&%s%s”%(self.result,名称,x)
      def句柄\u开始标记(自身、标记、属性):
      “”“删除除合法标记以外的所有标记”“”
      如果标记在self.valid_标记中:
      self.result=self.result+“”
      def handle_endtag(self,tag):
      如果标记在self.valid_标记中:
      self.result=“%s”%(self.result,标记)
      remTag=''%tag
      self.endTagList.remove(remTag)
      def清理(自):
      “”“附加缺少的结束标记”“”
      对于范围内的j(len(self.endTagList)):
      self.result=self.result+self.endTagList[j]
      def带:
      “”“从字符串s中删除非法HTML标记”“”
      parser=StrippingParser()
      parser.feed(s)
      parser.close()
      parser.cleanup()
      返回parser.result
      
      来自漂白剂进口清洁剂
      打印干净(“我的文本””,标记=[],条带=真,条带注释=真)
      
      你可能想让他知道这是一个第三方库。实际上,我在谷歌上搜索了你建议的相同查询,但这些都没有让我感到足够高兴。请查看此感谢Gagandeep。你可以发布一个答案,我会投票的it@Hank对不起,有什么困惑。遗憾的是,这不再是一个好方法。
      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
      
      from bleach import clean
      print clean("<strong>My Text</strong>", tags=[], strip=True, strip_comments=True)