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

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; 'Steve'<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 & 'Steve'<br>Bill & 'Steve'<br>Bill & 'Steve'

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;
'(单引号)=>'
<=>&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 "\n" ; // 允许 <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,阿萨德

PHP中字符串与html相互转化函数的更多相关文章

  1. SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)

    在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名)   例如:select convert(int,'3')2. cast(字段名 as i ...

  2. c语言中字符串转数字的函数

    ANSI C 规范定义了 atof().atoi().atol().strtod().strtol().strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习.另外在 C99 / C ...

  3. js中字符串和数组相互转化的方法

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a } p. ...

  4. JavaScript中字符串处理的一些函数

    废话,不多说,直接上代码 <script type="text/javascript"> (function(){ var methods = { camelize: ...

  5. Python中的列表,元组,字符串之间的相互转化

    Python中的列表元组和字符串之间的相互转化需要利用,tuple(),list(),str(). 示例如下: >>> the_string = "hello I'am x ...

  6. PHP去掉转义后字符串中的反斜杠\函数stripslashes

    addslashes函数主要是在字符串中添加反斜杠对特殊字符进行转义,stripslashes则是去掉转义后字符串中的反斜杠\,比如当你提交一段 json数据到PHP端的时候可能会遇到json字符串中 ...

  7. (转载)PHP去掉转义后字符串中的反斜杠\函数stripslashes

    (转载)http://www.beijibear.com/index.php?aid=182 addslashes()函数主要是在字符串中添加反斜杠对特殊字符进行转义,stripslashes()则是 ...

  8. c/c++中与字符串处理相关的函数

    void *memccpy (void *dest, const void *src, int c, size_t n); 从src所指向的对象复制n个字符到dest所指向的对象中.如果复制过程中遇到 ...

  9. JAVA中字符串函数subString的用法小结

    本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...

随机推荐

  1. c++符号常量:limits头文件

    CHAR_BIT char的位数 CHAR_MAX char的最大值 CHAR_MIN char的最小值 SCHAR_MAX signed char的最大值 SCHR_MIN signedchar的最 ...

  2. CentOS下安装Docker-CE

    1.安装最新版本的话可以使用阿里云的自动安装脚本: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 2.安装指定的 ...

  3. 【转】vMAN 和 PVID

    vMAN关的情况下,如果用户的包内带有VLAN TAG,则以用户的TAG为准,如果用户的包内不带VLAN TAG,就打上PVID:vMAN开的情况下,无论用户的包内是否带有VLAN TAG,都强制在外 ...

  4. java DES加解密及Wrong key size错误

    如下的DES加密方法会报错:Wrong key size public static String encryptDES(String source) throws Exception{ Secret ...

  5. BM递推

    从别的大佬处看到的模板 #include<bits/stdc++.h> #define fi first #define se second #define INF 0x3f3f3f3f ...

  6. chrome.debugger

    官网: https://chromedevtools.github.io/devtools-protocol/ https://developer.chrome.com/extensions/debu ...

  7. [leetcode]18. 4Sum四数之和

    Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums s ...

  8. ABP框架提示框

    abp.message.info('some info message', 'some optional title');abp.message.success('some success messa ...

  9. c#mysql批量更新的两种方法

    总体而言update 更新上传速度还是慢. 1:  简单的insert  速度稍稍比MySqlDataAdapter慢一点 配合dapper 配置文件 <?xml version="1 ...

  10. 探索未知种族之osg类生物---呼吸分解之更新循环一

    上节总结 前几天我们大体上介绍完成了osg的事件循环的介绍,总结一下osg的时间循环主要就是得到平台(windows)的所有消息,并遍历所有的node的eventCallback,并对他们进行处理.接 ...