PHP截取汉字并分词

mr_xiaoyu 2011-01-20 04:35:06
问题是这样的.
现在有一段字符串,类似于 <div>asdasd"asd"汉字'又汉字',ddd再汉字,556245还是汉字</div>
就是把一串网页代码里面的汉字取出来连到一起,并且2个字两个字的分组,用空格隔开.
最后的效果类似于这样, 汉字 又汉 字再 汉字 还是 汉字 ,除了汉字外,其他什么都不要.
哪位高手能帮我写一个函数,给一个字符串就给自动分成这样.
感激不尽...
...全文
333 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyaspnet 2011-01-20
  • 打赏
  • 举报
回复
strstr
(PHP 4, PHP 5)

strstr — 查找字符串的首次出现

说明
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。

Note:

该函数区分大小写。如果想要不区分大小写,请使用 stristr()。


Note:

如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。


参数

haystack
输入字符串。

needle
如果 needle 不是一个字符串,那么它将被转化为整型并且作为字符的序号来使用。

before_needle
若为 TRUE,strstr() 将返回 needle 在 haystack 中的位置之前的部分。


返回值
返回字符串的一部分或者 FALSE(如果未发现 needle)。

更新日志
版本 说明
5.3.0 新增可选的 before_needle 参数。
4.3.0 strstr() 成为二进制安全的。


范例

Example #1 strstr() 范例

<?php
$email = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // 打印 @example.com

$user = strstr($email, '@', true); // 从 PHP 5.3.0 起
echo $user; // 打印 name
?>
skyaspnet 2011-01-20
  • 打赏
  • 举报
回复
str_replace
(PHP 4, PHP 5)

str_replace — 子字符串替换

说明
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。

如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace() 和 preg_replace()。

参数
如果 search 和 replace 为数组,那么 str_replace() 将对 subject 做二者的映射替换。如果 replace 的值的个数少于 search 的个数,多余的替换将使用空字符串来进行。如果 search 是一个数组而 replace 是一个字符串,那么 search 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。

如果 search 和 replace 都是数组,它们的值将会被依次处理。


search
查找的目标值,也就是 needle。一个数组可以指定多个目标。

replace
search 的替换值。一个数组可以被用来指定多重替换。

subject
执行替换的数组或者字符串。也就是 haystack。

如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组。

count
Note: 如果被指定,它将控制匹配和替换的次数。


返回值
该函数返回替换后的数组或者字符串。

更新日志
版本 说明
5.0.0 新增 count 参数。
4.3.3 函数行为改变。旧的版本中存在一个 BUG —— 当 search 和 replace 两个参数都是数组的时候,将导致空的 search 索引被跳过,但是却没有同时前移 replace 内部指针。该错误发生在 PHP 4.3.3,任何依赖于此 BUG 的脚本应该先除去空的查找值,从而模拟原始的行为。
4.0.5 大多数参数都可以为数组。


范例

Example #1 str_replace() 基本范例

<?php
// 赋值: <body text='black'>
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");

// 赋值: Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

// 赋值: You should eat pizza, beer, and ice cream every day
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, $yummy, $phrase);

// 赋值: 2
$str = str_replace("ll", "", "good golly miss molly!", $count);
echo $count;
?>


Example #2 可能的 str_replace() 替换范例

<?php
// 替换顺序
$str = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order = array("\r\n", "\n", "\r");
$replace = '<br />';

// 首先替换 \r\n 字符,因此它们不会被两次转换
$newstr = str_replace($order, $replace, $str);

// 输出 F ,因为 A 被 B 替换,B 又被 C 替换,以此类推...
// 由于从左到右依次替换,最终 E 被 F 替换
$search = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'A';
echo str_replace($search, $replace, $subject);

// 输出: apearpearle pear
// 由于上面提到的原因
$letters = array('a', 'p');
$fruit = array('apple', 'pear');
$text = 'a p';
$output = str_replace($letters, $fruit, $text);
echo $output;
?>
skyaspnet 2011-01-20
  • 打赏
  • 举报
回复
strip_tags
(PHP 4, PHP 5)

strip_tags — 从字符串中去除 HTML 和 PHP 标记

说明
string strip_tags ( string $str [, string $allowable_tags ] )
该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。它使用与函数 fgetss() 一样的标记去除状态机。

参数

str
输入字符串。

allowable_tags
使用可选的第二个参数指定不被去除的字符列表。

Note:

HTML 注释和 PHP 标签也会被去除。这里是硬编码处理的,所以无法通过 allowable_tags 参数进行改变。



返回值
返回处理后的字符串。

更新日志
版本 说明
5.0.0 strip_tags() 变为二进制安全的。
4.3.0 HTML 注释总是被删除。


范例

Example #1 strip_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>');
?>
以上例程会输出:

Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>
amani11 2011-01-20
  • 打赏
  • 举报
回复

屏蔽HTML标签吧?请查手册strip_tags

单、双引号,str_replace、strtr等都可实现此功能。。。。建议多翻手册
mr_xiaoyu 2011-01-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amani11 的回复:]
PHP code


$str =<<<html
<div>asdasd"asd"汉字'又汉字',ddd再汉字,556245还是汉字</div>
html;
print_r(str_split(preg_replace('/[\x00-\x7F]/', '', $str), 6));//UTF-8 => 6
[/Quote]
哥,你太神了.
顺便再给一个屏蔽HTML和双引号,单引号的代码吧?
amani11 2011-01-20
  • 打赏
  • 举报
回复



$str =<<<html
<div>asdasd"asd"汉字'又汉字',ddd再汉字,556245还是汉字</div>
html;
print_r(str_split(preg_replace('/[\x00-\x7F]/', '', $str), 6));//UTF-8 => 6


4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧