文章教程

5.11处理含有HTML标记的字符串

9/17/2020 9:26:54 PM 人评论 次浏览

5.11 处理含有HTML标记的字符串

使用PHP进行Web页面开发,经常会遇到处理HTML标记的问题。PHP提供的函数htmlentities()完成对字符串中HTML标记的处理,该函数可将字符串中有关字符转换成HTML实体,即HTML字符编码。该函数的语法如下所示。


string htmlentities(string$str);


函数htmlentities()将字符串$str中的HTML标记(如<、>等)转换成相关编码的形式。代码5-16演示了该函数的用法。

代码5-16 使用函数htmlentities()处理字符串中的HTML标记5-16.php


01 <?php

02 $str="<b>I love PHP!</b>";

03 $str_entity=htmlentities($str);//处理字符串中的HTML标记

04

05 echo"转换前:$str";

06 echo"<br/>";

07 echo"<br/>";

08

09 echo"转换后:$str_entity";

10 ?>


【代码解析】如果读者还不知道HTML标签的意义,请返回第1章查看。<b>表示将字符串加粗显示。如果不转化成HTML编码形式,字符串会原样输出文字。这段程序的执行结果如图5-16所示。

图 5-16 处理字符串中的HTML标记

从执行结果可以看出,转换前,浏览器将字符串"<b>I love PHP!</b>"做解析,然后将其以粗体文字的形式显示到浏览器上;而转换后,HTML标记被原样显示到浏览器上。事实上,转换后,字符串变成了"<b>I love PHP!</b>",这时浏览器将其解析为<b>I love PHP</b>并且输出到浏览器端。通过查看该页面的源代码,可以更清楚地了解这一点。5-16.php执行后的页面源代码如下所示。其中字符<转换成HTML实体<,字符>转换成HTML实体>。HTML实体通常以&开头,以;结束。


转换前:<b>I love PHP!</b><br/>转换后:<b>I love PHP!</b>


还有一个和函数htmlentities()功能类似的函数:htmlspecialchars(),该函数可以将特殊符号转换成HTML实体。它主要转换的特殊符号有如下几个。

❑&:转换成&。

❑"(双引号):转换成"。

❑<(小于号):转换成<

❑>(大于号):转换成>

函数htmlspecialchars()的用法和函数htmlentities()类似,这里不再赘述。

PHP还提供了将HTML实体转换成相关字符的函数:html_entity_decode()。该函数的语法如下所示。


string html_entity_decode(string$str);


该函数将字符串$str中的HTML实体转换成相关的字符,它可以看做是函数htmlentities()的逆运算。代码5-17演示了该函数的用法。

代码5-17 使用函数html_entity_decode()将HTML实体转换成相关字符5-17.php


01 <?php

02 $str="<a href='http://www.php.net'>PHP language website</a>";

03

04 $str_entity=htmlspecialchars($str);

05 $str_html=html_entity_decode($str_entity);//将HTML实体转换成字符

06

07 echo"调用函数htmlspecialchars后:";

08 echo"<br/>";

09 echo$str_entity;

10

11 echo"<br/>";

12 echo"<br/>";

13

14 echo"调用函数html_entity_decode后:";

15 echo"<br/>";

16 echo$str_html;

17 ?>


【代码解析】第2行定义的变量中包含了<a>标签,这是一个链接标签。第4行先去掉变量中的特殊字符,然后第5行使用html_entity_decode()转换HTML实体。这段代码的执行结果如图5-17所示。

图 5-17 使用html_entity_decode()转换HTML实体

教程类别