整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

从零之056 网页代码中提取文字(从body中去除h

从零之056 网页代码中提取文字(从body中去除html代码)

过上一章的内容,现在网页文件中,我们还须要去除的就是html代码了。

下面我们要研究一下html代码的主要特点,不管什么样的HTML代码,他们均被左右尖括号所包围,就像这个样子<代码>,因此,我们就有了去除的方法,把括号中的内容和联通括号一起去除掉,就可以了。

下面开始,根据我们的想法,可以写出,下面这样的主程序

看上图,再上一张定义的函数,我们把它移动到了通用函数库中

第21行,这是我们新增的代码,执行完这个代码,就去除掉了HTML标记,剩下的就应该是纯文字内容了。在这里,我们定义了一个函数,名字叫做去除html代码

下面我们研究一下,这个函数的内容,如下图

因为使用了正则表达式,因此,在程序运行前,必须导入模块re

第3行,导入我们所需要的re模块,我们想用到正则表达式

第5行,定义函数

第6行,用右尖括号分格隔成列表

第8行,对列表元素进行遍历

第9行,使用正则挑出有效的内容,其实就是去除以前孤立的右尖括号的内容。

第10行,对有效的内容进行左尖括号分隔

第11行,左尖括号前面的内容就是有效的文字内容

完整的程序如下

下面我们对程序进行下测试,在上一章中,程序运行后得到如下的内容(内容太长,只截取一小部分)

本次程序改造后,运行得到下面的内容


从上面两个图片可以看出,我们确实把文字内容提取出来了。

网页设计和开发中,了解HTML的每个组成部分是至关重要的。其中,<body>标签承载着网页的所有可见内容,它是构建高效、互动和吸引人的网站的基础。本文将深入探讨<body>标签的功能、重要性以及如何最大化其潜力以提升网页的整体表现和用户体验。

什么是<body>标签?

在HTML(超文本标记语言)中,<body>标签定义了网页的主体部分,这部分是所有可视化内容的容器,包括文本、图片、视频、游戏界面等。位于<html>标签内部,紧随<head>标签之后,<body>标签是实现页面功能和设计的舞台。

<body>标签的核心作用

  1. 内容容器:<body>标签包含了所有用户可以直接与之交互的元素,从基本的段落文本到复杂的交互式动画。
  2. 布局基础:通过CSS(级联样式表)与JavaScript的配合使用,开发者可以在<body>内部创建出复杂的布局和动态功能。
  3. SEO优化:虽然<body>本身对搜索引擎优化(SEO)没有直接贡献,但它包含的内容和标签使用方式会极大影响搜索引擎的抓取效果。

如何优化<body>标签的使用?

  1. 合理使用语义化标签:使用如<article>、<section>、<footer>等标签来增强内容的结构化,这不仅帮助搜索引擎更好地理解和索引你的网页,也提升了网站的无障碍访问性。
  2. 确保快速加载:<body>内的元素越多,页面加载时间可能越长。优化图片大小、压缩CSS和JavaScript文件,以及利用现代的懒加载技术,可以显著提升页面加载速度。
  3. 响应式设计:随着移动设备的普及,使你的网页在各种屏幕尺寸上都能良好显示是非常重要的。利用媒体查询(Media Queries)确保<body>内的内容能够根据不同设备调整布局。

案例分析

让我们通过一个简单的例子来看看如何在实践中应用这些技巧。假设我们需要创建一个简单的个人博客页面,我们会这样构建<body>:

<body>
  <header>
    <h1>欢迎来到我的博客</h1>
    <nav>
      <ul>
        <li><a href="#posts">文章</a></li>
        <li><a href="#about">关于我</a></li>
      </ul>
    </nav>
  </header>
  <main id="posts">
    <article>
      <h2>HTML基础</h2>
      <p>HTML是构建网页的基础...</p>
    </article>
    <!-- 更多文章 -->
  </main>
  <footer>
    <p>版权所有 ? 2024</p>
  </footer>
</body>

在这个例子中,我们使用了语义化标签来定义网页的头部、主要内容区域和尾部。这不仅使网页结构清晰,而且有助于SEO和屏幕阅读器的使用。

HTML标签相关的字符串格式化

string nl2br ( string $string )

nl2br() 就是将\n 替换成 <br> //javascript对\n才能够执行换行,对</br>是不能执行换行

htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。

string htmlspecialchars(string,quotestyle,[character-set])

转换以下字符及对应的实体

& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >

第二个参数: ENT_COMPAT 只转换双引号, 保留单引号, 为默认值 compat: 兼容性

ENT_QUOTES 同时转换两种引号 quotes: 引号

ENT_NOQUOTES 不对引号进行转换

<html>
<body>
<?php
$str="John & \" 'Adams'";
echo htmlspecialchars($str, ENT_COMPAT);
echo "<br />";
echo htmlspecialchars($str, ENT_QUOTES);
echo "<br />";
echo htmlspecialchars($str, ENT_NOQUOTES);
?>
</body>
</html>

输出结果:John & " 'Adams'

John & " 'Adams'

John & " 'Adams'

htmlentities() 可以将所有的非ASCII码字符转换为对应的实体代码;除字母、数字、\外, 汉字和键盘上其他字符都转换

<?php
$str="A 'quote' \" is <b>bold</b>" ;
echo htmlentities ( $str ); // 输出后源代码: A 'quote' is <b>bold</b>
echo htmlentities ( $str , ENT_QUOTES ); // 输出后源代码: A 'quote' is <b>bold</b>
?>

返回的结果:A 'quote' "is <b>bold</b>

A 'quote' "is <b>bold</b>

注意: htmlspecialchars()和htmlentities作用直接输出HTML脚本

htmlspecialchars()和htmlentities()函数对于转义字符"\"处理,不会转义实体代码,要么当转义字符对待,要么原样输出;

PHP中htmlentities和htmlspecialchars的区别

这两个函数的功能都是转换字符为HTML字符编码, 特别是url和代码字符串。防止字符标记被浏览器执行。

使用中文时没什么区别, 但htmlentities会格式化中文字符使得中文输入是乱码。

htmlentities转换所有的html标记, htmlspecialchars只格式化& ' " < 和 > 这几个特殊符号

addslashes() 在指定的预定义字符前添加反斜杠。

这些预定义字符是:单引号 (') 双引号 (") 反斜杠 (\) NULL字符(\x00)

提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备合适的字符串。

注释:默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE数据自动运行 addslashes()。

不要对已经被magic_quotes_gpc转义过的字符串使用 addslashes(),因为这样会导致双层转义。

遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。(如:$c=(!get_magic_quotes_gpc())?addslashes($c):$c;)

在本例中,我们要向字符串中的预定义字符添加反斜杠:

<?php
$str="Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>

输出:

Who's John Adams? This is not safe in a database query.

Who\'s John Adams? This is safe in a database query.

<?php
header("Content-type:text/html; charset=utf-8");
$str="wo are \x0a studying \x00 php";
echo $str;
echo "<br>";
echo addslashes($str);
?>

输出:

wo are studying php

wo are studying >wo are studying \0 php< php



stripslashes() 删除反斜线("\")

在提交的表单数据中 ' " \ 等字符前被自动加上一个\ ,这是配置文件php.ini中选项magic_quotes_gpc在起作用,

默认是打开的,如果不处理则将数据保存到数据库时,有可能会被数据库误当成控制符号而引起错误。

通常htmlspecialchars()和stripslashes()函数复合的方式,联合处理表单中的提交的数据htmlspecialchars(stripslashes())

strip_tags()

string strip_tags ( string $str [, string $allowable_tags ] )

剥去 HTML、XML 以及 PHP 的标签。

<?php
echo strip_tags("Hello <b><i>world!</i></b>","<b>");
?>

输出结果:Hello world!

实例:

<?php
$str="<b>webserver;</b> & \ 'Linux' & Apache";
echo "$str"; //直接输出
echo "<br/>";
echo htmlspecialchars($str,ENT_COMPAT); //只转换双引号,为默认参数
echo "<br />";
echo htmlspecialchars($str,ENT_NOQUOTES); //不对引号进行转换
echo "<br />";
echo htmlspecialchars($str,ENT_QUOTES); //同时转换单引号和双引号
echo "<br />";
echo htmlentities($str); //将所有的非ASCII码字符转换为对应的实体代码
echo "<br />";
echo addslashes($str); //将" ' \ 字符前添加反斜线
echo "<br />";
echo stripslashes($str); //删除反斜线
echo "<br />";
echo strip_tags($str); //删除<html>标记
?>

输出结果:

webserver; & \ 'Linux' & Apache