zoukankan      html  css  js  c++  java
  • PHP中字符串与html相互转化函数

    在一般通信过程中,可能会遇到文档文本编码中所不包括很多字符,或者无法在键盘上输入的字符。例如,版权符号(©)、分币符号(¢)和语法重音符号等就属于这种字符。为了克服这些缺点,专门设计了一组统一的按键编码,称为字符实体引用。

    1,htmlentities(),将字符串中特殊字符转化为html实体。

     string htmlentities(string $str,int $quote_style,int $charset,boolean $double_encode),因为标记中引号有特殊意义,可以通过$quote_style参数来选择如何处理引号,其值:ENT_COMPAT,转换双引号,忽略单引号,这是默认值;ENT_NOQUOTES,忽略双引号和单引号;ENT_QUOTES,转换双引号和单引号。$charset参数确定转换所用字符集,如果忽略charset,默认认为ISO-8859-1。$double_encode会阻止htmlentities()对字符串中已有的HTML实体编码。

    如:

    <?php
    $str = "Bill & 'Steve'";
    echo htmlentities($str, ENT_COMPAT); // 只转换双引号
    echo "<br>";
    echo htmlentities($str, ENT_QUOTES); // 转换双引号和单引号
    echo "<br>";
    echo htmlentities($str, ENT_NOQUOTES); // 不转换任何引号
    

    输出:

    Bill & 'Steve'
    Bill & 'Steve'
    Bill & 'Steve'

    页面源代码是:

    Bill &amp; 'Steve'<br>Bill &amp; &#039;Steve&#039;<br>Bill &amp; 'Steve'

    其反函数是html_entity_decode(),html_entity_decode(string $str,int $flags,string $encoding),$flags规定翻译表将包含哪种引号以及翻译表用于哪种文档类型,默认是ENT_COMPAT | ENT_HTML401$encoding一个规定了要使用的字符集的字符串,默认是ISO-8859-1。
    如:
    <?php
    $str = "Bill & 'Steve'";
    echo html_entity_decode($str, ENT_COMPAT); // 只转换双引号
    echo "<br>";
    echo html_entity_decode($str, ENT_QUOTES); // 转换双引号和单引号
    echo "<br>";
    echo html_entity_decode($str, ENT_NOQUOTES); // 不转换任何引号
    输出:
    Bill & 'Steve'
    Bill & 'Steve'
    Bill & 'Steve'

    页面源代码是:
    Bill & &#039;Steve&#039;<br>Bill & 'Steve'<br>Bill & &#039;Steve&#039;

    2,htmlspecialchars()函数,将字符串中特殊字符转化为html实体。

    string htmlspecialchars(string $str,int $quote_style,int $charset,boolean $double_encode),参数与htmlentities()函数中参数类似。

    如:

    <?php
    $str = "This is some <b>bold</b> text";
    $str1 = htmlspecialchars($str);
    echo $str."<br/>";
    echo $str1;

    输出:

    This is some bold text
    This is some <b>bold</b> text

    源代码如下:

    This is some <b>bold</b> text<br/>This is some &lt;b&gt;bold&lt;/b&gt; text
    htmlspecialchars()函数可以转换的字符列表以及最终转换格式如下:
    &=>&amp;
    "(双引号)=>&quot;
    '(单引号)=>&#039;
    <=>&lt;
    >=>&gt;
    注:要防止用户向一个交互式web应用程序中输入HTML标签,这个函数尤为有用。以下例子使用htmlspecialchars()来转换可能有害的字符:
    <?php
    $input = "I just can't get <<enough>> of PHP!";
    echo htmlspecialchars($input);
    

    其反函数是htmlspecialchars_decode(),htmlspecialchars_decode(string $str,int $flag),$flags规定翻译表将包含哪种引号以及翻译表用于哪种文档类型,默认是ENT_COMPAT | ENT_HTML401

    如:

    <?php
    $str = "This is some <b>bold</b> text.";
    $str1 = htmlspecialchars_decode($str);
    echo $str."<br/>",$str1;

    输出:

    This is some <b>bold</b> text.
    This is some bold text.

    源代码:

    This is some &lt;b&gt;bold&lt;/b&gt; text.<br/>This is some <b>bold</b> text.

    3,strip_tags()函数,从字符串中移除空字符,HTML和PHP标记,将html转化为纯文本。

    string strip_tags(string $str,string $allowable_tags) 

    $str,待处理字符串,$allowable_tags指定不被去除的字符列表。

    如:

    <?php
    $text  =  '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>' ;
    echo  strip_tags ( $text );
    echo  "
    " ;
    
    // 允许 <p> 和 <a>
    echo  strip_tags ( $text ,  '<p><a>' );
    

    输出:

    4,get_html_translation_table()函数,返回使用htmlspecialchars()和htmlentities()后的转换表。

    array get_html_translation_table(int $table,int $flags,string $encoding),$table表示想要的表,分别是HTML_ENTITIES,HTML_SPECIALCHARS。$flags规定翻译表将包含哪种引号以及翻译表用于哪种文档类型,默认是ENT_COMPAT | ENT_HTML401$encoding一个规定了要使用的字符集的字符串,默认是ISO-8859-1。

    如:

    <?php
    var_dump ( get_html_translation_table ( HTML_ENTITIES ,  ENT_QUOTES  |  ENT_HTML5 ));
    

    输出:

    5,阿萨德

  • 相关阅读:
    Elasticsearch 技术分析(五):如何通过SQL查询Elasticsearch
    IntelliJ IDEA 2018.3 重大升级,哪些功能打动了你?
    终于有人把“TCC分布式事务”实现原理讲明白了!
    Elasticsearch 技术分析(一): 基础入门
    拜托!面试请不要再问我Spring Cloud底层原理
    一个正则表达式引发的血案
    程序员啊,他又加班了
    程序员你为什么这么累 | 编码规范
    全文搜索引擎 ElasticSearch 还是 Solr?
    TCP三次握手原理,你真的了解吗?
  • 原文地址:https://www.cnblogs.com/usa007lhy/p/6587037.html
Copyright © 2011-2022 走看看