`
bufanliu
  • 浏览: 201177 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

网页中超长文字的断行问题

阅读更多
网页中超长文字的断行问题2006/9/25 at 01:50 · PHP, XHTML&CSS

这个应该是比较常见的问题了,通常是连续的一长串无空格的半角字符所引起的,比如比较长的超链接就很有可能把你的页面撑开。网上常见的解决办法就是使用css属性 break-word:break-all; ,但是这个只对IE浏览器有效。

下面介绍一种办法,可以保证各浏览器的兼容。

<wbr>标记,它的作用是建议浏览器在这个标记处可以断行,只是建议而不是必定会在此处断行,还要根据整行文字长度而定。因此只要在连续的文字中间适当的插入若干<wbr>标记就能解决断行问题。

我最初看到这个解决办法是在Gmail的代码中,它是这么实现的:(All rights reserved by Google.)

JS实现
function HtmlEscapeInsertWbrs(str, n, chars_to_break_after,
                              chars_to_break_before)
{
    var out = '';
    var strpos = 0;
    var spc = 0;
    for (var i = 1; i < str.length; ++i) {
        var prev_char = str.charAt(i - 1);
        var next_char = str.charAt(i);
        if (IsSpace(next_char)) {
            spc = i;
        } else {
            if (i - spc == n
            || chars_to_break_after.indexOf(prev_char) != -1
            || chars_to_break_before.indexOf(next_char) != -1)
            {
                out += HtmlEscape(str.substring(strpos, i))
                      + '<wbr>';
                strpos = i;
                spc = i;
            }
        }
    }
    out += HtmlEscape(str.substr(strpos));
    return out;
}
/////
function IsSpace(ch)
{
    return (" trn".indexOf(ch) >= 0);
}
function HtmlEscape(str){
    return
        str.replace(/&/g,"&amp;").replace(/</g,"&lt;")
        .replace(/>/g,"&gt;").replace(/\"/g,"&quot;");
}
说明: 函数已经帮你处理了Html敏感的符号(&<>),用了这个函数并不是说字符串显示的时候就会在某个点断行,只是在其中设置了可能的断行点(<wbr>)标记,在显示宽度不够的时候的情况下才指示浏览器做出断行。


用法: 参数说明
str: 你要处理的原始字符串
n: 每行最多多少个字符
chars_to_break_after: 一个字符串,比如"-:_",就会在这些字符后面发生断行(如果有断行必要) 如果不需要特别设置,那么使用空字符串 ""就行了

chars_to_break_before: 功能类似于上面这个, 没有特殊需要就设置成 "" 就可以了

函数是JavaScript的实现, 我根据这个做了一个PHP的实现,它工作得很好。

PHP实现
/*
* support UTF-8 only,
* ** the function return HTML Format string **
*/
function HtmlEscapeInsertWbrs($str, $n=10,
         $chars_to_break_after='',$chars_to_break_before='')
{
    $out = '';
    $strpos = 0;
    $spc = 0;
    $len = mb_strlen($str,'UTF-8');
    for ($i = 1; $i < $len; ++$i) {
      $prev_char = mb_substr($str,$i-1,1,'UTF-8');
      $next_char = mb_substr($str,$i,1,'UTF-8');
      if (_u_IsSpace($next_char)) {
        $spc = $i;
      } else {
        if ($i - $spc == $n
         || mb_strpos( $chars_to_break_after,
            $prev_char,0,'UTF-8' ) !== FALSE
         || mb_strpos( $chars_to_break_before,
            $next_char,0,'UTF-8')  !== FALSE )
          {
            $out .= HtmlEscape(
                mb_substr($str,$strpos, $i-$strpos,'UTF-8')
                       ) . '<wbr>';
            $strpos = $i;
            $spc = $i;
          }
      }
    }
    $out .= HtmlEscape(
             mb_substr($str,$strpos,$len-$strpos,'UTF-8')
               );
    return $out;
}
/////
function _u_IsSpace($ch)
{
  return mb_strpos(" trn",$ch,0,'UTF-8') !== FALSE;
}
function HtmlEscape($s)
{
  return htmlspecialchars($s);
}
同样,该函数会对传入的字符串中的特殊字符做转义处理(htmlspecialchars()),因此传入的字符串必须是原始的(未经htmlspecialchars()处理过的),函数返回后的结果可以直接在网页中输出。
参数使用方法跟上面的JS版本类似,我就不罗唆了。

你可以改写成其他语言的,到时候也记得发给我一份
分享到:
评论

相关推荐

    制作网页中的滚动文字

    ### 制作网页中的滚动文字:深入解析与实践 在网页设计中,滚动文字是一种常见的动态效果,用于吸引用户注意或展示重要的信息流。本文将详细介绍如何利用HTML的`&lt;marquee&gt;`标签来实现滚动文字,并通过具体示例加深...

    解决网页文字无法复制的问题

    * 可以通过禁用IE浏览器中的脚本来解决网页文字无法复制的问题。 * 使用快捷键“Ctrl+A”可以将网页中的全部内容选中。 * 可以将整个网页保存成文本文件。 * 使用“查看源文件”可以找到网页的内容进行复制。 这篇...

    自定义TextView解决超长文字显示

    本篇文章将深入探讨如何自定义TextView来解决超长文字显示的问题。 首先,我们可以通过继承Android的TextView类,创建一个新的自定义类。在自定义类中,我们可以重写一些关键方法,如`onMeasure()`,以调整文本的...

    在网页中制作文字滚动效果

    在网页中制作文字滚动效果

    怎么把网页上不能复制的文字复制下来

    ### 如何破解网页上的不可复制文字 在互联网的日常使用过程中,我们经常遇到一些...通过以上介绍的方法和技术,我们可以有效地应对网页上无法复制文字的问题。每种方法都有其适用场景,灵活运用可以大大提高工作效率。

    网页文字特效软件,多种网页文字特效

    网页文字特效是网页设计中的一种重要元素,它们可以吸引用户注意力,增强页面视觉效果,同时也能有效传达信息。本文将详细介绍如何使用特定的软件来创建多种网页文字特效,并探讨其在网页设计中的应用。 首先,...

    解除网页文字复制限制

    网页文字复制限制是一种常见的网页保护措施,用于防止用户未经许可大量复制网站上的内容。这种限制主要由网站开发者通过JavaScript、CSS或服务器端技术实现。在某些情况下,这种限制可能对合法用户造成不便,例如...

    如何复制网页上不能复制的文字

    在互联网时代,人们经常需要从网页上复制文字,但是有些网页制作者为了保护版权或提高访问量,会在网页代码中加入一些限制复制的代码,使得用户无法复制文字。那么,如何复制网页上不能复制的文字呢? 首先,我们...

    windows系统下识别图片、网页中的文字

    标题中的“Windows系统下识别图片、网页中的文字”是指在微软Windows操作系统环境下,利用特定的软件或技术来识别并提取图像或网页中不可选中的文本内容。这项技术通常被称为光学字符识别(Optical Character ...

    网页上漂浮文字

    网页上的漂浮文字广告是一种常见的在线营销策略,它利用JavaScript或者CSS技术在用户浏览网页时显示浮动的文字元素,以吸引用户的注意力。这种广告形式通常设计为动态效果,可以在页面上移动,滚动,甚至跟随用户的...

    在网页中输出带颜色文字

    本程序在网页中输出带颜色文字,代码简单、实用,让文字不在只是黑色。

    网页文字抓取器 1.3

    网页文字抓取器1.3是一款专为解决网络上某些网页文字无法直接选取和复制问题而设计的实用工具。在互联网上,有些网站为了防止内容被盗用或保护版权,会限制用户对页面文本的选择和复制功能。这时,网页文字抓取器1.3...

    网页制作---文字特效集锦

    网页制作中的文字特效是提升网站视觉吸引力和用户体验的重要手段。在网页设计中,文字不仅是信息的载体,也是设计的一部分,可以创造出独特的视觉效果。本文将深入探讨“网页制作---文字特效集锦”这一主题,介绍...

    网页文字不能复制-解除网页文字复制限制.docx

    在学习和工作中,我们经常遇到网页文字无法复制的情况。这种情况的出现是因为网页制作者为了防止网页内容被盗用,而在网页中嵌入了Javascript语言,通过编程的手段屏蔽了复制功能。那么,如何解除网页文字复制限制呢...

    网页文字抓取器

    网页文字抓取器是一种工具,主要用于从互联网上的网页中批量提取文字内容。这种工具在数据挖掘、信息分析、搜索引擎优化(SEO)等领域有着广泛的应用。它能够自动化地爬取网页,解析HTML,提取出纯文本,帮助用户...

    网页玻璃文字动画特效.rar

    网页玻璃文字动画特效.rar 网页玻璃文字动画特效.rar 网页玻璃文字动画特效.rar 网页玻璃文字动画特效.rar 网页玻璃文字动画特效.rar 网页玻璃文字动画特效.rar 网页玻璃文字动画特效.rar 网页玻璃文字动画特效.rar ...

    微信小程序中的canvas 文字断行和省略号显示功能的处理方法

    以下是对微信小程序中Canvas文字断行和省略号显示功能的详细解析: 1. **文字测量**: - `measureText()` 方法是用于测量文本尺寸的关键,它返回一个对象,其中的 `width` 属性表示文本的宽度。在微信小程序中,这...

    最好的网页文字提取器

    网页文字提取器是一种工具,主要用于从网页中快速高效地抓取和提取文本内容,无论是有版权保护还是无保护的页面。这种工具对于需要大量网络文本数据的研究人员、内容创作者、数据分析师或者SEO专家来说非常实用。它...

    文字一行一行滚动

    在IT行业中,"文字一行一行滚动"是一种常见的视觉效果,常用于新闻网站、公告栏或者电子显示屏等场景,以模拟传统新闻播报的方式展示信息。这种效果通常通过编程语言实现,如HTML、CSS和JavaScript,为网页增加动态...

    教你复制那些复制不了的网页文字

    当前很多网页制做者都不想让自己网页中的内容直接就让人给复制去,有的是为了版权、有的是为了让人再回来看这段文字,提高他的访问量等等。他们一般会在网页代码中加入以下一个或多个代码: onpaste="return false...

Global site tag (gtag.js) - Google Analytics