Heim > Backend-Entwicklung > PHP-Tutorial > php实习tips(如何生成简单摘要)

php实习tips(如何生成简单摘要)

WBOY
Freigeben: 2016-07-29 08:50:51
Original
1068 Leute haben es durchsucht

产生摘要

最近需要加一个需求,有一个send_article的接口,需要从html代码里提取出来中文字符,变成摘要,先后试了很多方法,比如:

<code><span>//匹配中文utf8编码</span><span><span>function</span><span>utf8_summary</span><span>(<span>$article</span>)</span> {</span><span>$match</span> = <span>"/^[\x{4e00}-\x{9fa5}]+$/u"</span>;<span>//正则表达式,匹配中文</span>
    preg_match_all(<span>$match</span>,<span>$article</span>,<span>$temp</span>);
    <span>$summary</span> = <span>""</span>;
    <span>foreach</span> (<span>$temp</span><span>as</span><span>$key</span> => <span>$value</span>) {
        <span>$sum</span> = implode(<span>''</span> , <span>$value</span>);
        <span>$summary</span> = <span>$sumary</span> . <span>$sum</span>;
    }<span>//将中文拼接起来</span><span>return</span><span>$summary</span>;
}
</code>
Nach dem Login kopieren

问题为:
1.当出现连续的中文时,会出现无法取出的情况
2.当出现中文与字符混排时,该方法有效
原因:
可能当纯中文时,会使编码改变为其他的,所以正则表达式无法匹配,但是当出现有中文与字符混排时,字符编码为utf8,所以可以匹配,其实客户端可以将中文包裹在标签里,并加入head头,使用setchars=utf8来指明,但是客户端的实体类已经写好,改动太麻烦,只有后台想办法,于是尝试了第二个办法:

<code><span>$function</span> url_summary(<span>$article</span>) {
    <span>$article</span> = urlencode();
    <span>$match</span> = <span>"/^%[a-zA-Z0-9]{2}/"</span>;
    preg_match_all(<span>$match</span>,<span>$article</span>,<span>$temp</span>);
    <span>$summary</span> = <span>""</span>;
    <span>foreach</span> (<span>$temp</span><span>as</span><span>$key</span> => <span>$value</span>) {
        <span>$sum</span> = implode(<span>''</span> , <span>$value</span>);
        <span>$summary</span> = <span>$sumary</span> . <span>$sum</span>;    
    }
<span>$summary</span> = decode(<span>$summary</span>);
<span>return</span><span>$summary</span>;
}</code>
Nach dem Login kopieren

该方法的思路是:观察到当非字母与数字经过url编码以后,会变成类似于%e7的字符串,所以是取出这些,再把这些字符串拼接起来,在解码,会得到中文。

后来发现:其实是一个函数的事儿

发现有一个函数,可以改变编码

<code><span>iconv(<span>"gbk"</span>,<span>"utf-8"</span>,<span>"php中文转码"</span>)</span>;<span>//把中文gbk编码转为utf8</span><span>iconv(<span>"utf-8"</span>,<span>"gbk"</span>,<span>"php中文转码"</span>)</span>;<span>//把中文utf8编码转为gbk</span></code>
Nach dem Login kopieren

但是该函数,要使用的话,需要到php.ini文件中去把extension=php_iconv.dll这一项打开,并且安装iconv函数库才可以使用
,比较麻烦。
最后发现,使用strip_tags()函数可以解决
该函数可以去除html标签,然后截取一段即可,
mb_substr(summary,0,50);//截取一段字符  
并且需要去除转义字符,比如 ;  
str_replace(’ ’,‘’,
summary);//去除转义字符
即可生成摘要,后期可以加入更多功能,比如断句,换行;

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了php实习tips(如何生成简单摘要),包括了tips,php方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage