PHP中如何用正则表达式分离出某个关键词前后的文字?

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:35:05
比如有一篇中文文章,我的关键词是“域名”,并且“域名”这个词在这篇文章中多次出现。我想分离出每个“域名”左右的100个文字。用正则表达式如何做到?
多谢专家!太详细了!
“具体取关键词左右的文字是什么意思,是取该关键字前100个字,和该关键字后100个字码”:是这样的,就是取关键词前、后各一百个字。
剩下的我仔细琢磨琢磨~
======
另外,您的答案里的中文字,是按照GB码来算的吗?我看到操作字符串都是200~~那我要是用UTF8是不是就是300了?
=====
试了一下,截的还是有些问题...我这个问题不能用正则表达式直接截取吗?也就是用正则表达式直接把关键字左右各N个字截过来~
======
专家的方法可能过于高深-.-我是没琢磨透...yeahrahxephon同学的方法倒是不错,可有个问题,我有篇文章,里面有20个关键词,为什么在截取前后10个字的时候,能截取出15段(也就是数组里有15个),可改成50后,就只剩6个了,改成100后,只剩4个了。数组的大小有限制?
我明白了,是不是因为把截取范围改大了之后,关键词两边的句子重叠导致的这种情况?

<?php
$temp = 'www.baidu.com';
$str = '多谢专家!太详细了!
“具体取关键词左右的文字是什么意思,是取该关键字前100个字,和该关键字后100个字码”:是这样的,就是取关键词前、后各一百个字。
剩下的我仔细琢磨琢磨~
======www.baidu.com
另外,您的答案里的中文字,是按照GB码来算的吗?我看到操作字符串都是200~~那我要是用UTF8是不是就是300了?
=====
试了一下,截的还是有些问题...我这个问题不能用正则表达式直接截取吗?也就是用正则表达式直接把关键字左右各N个字截过来~';
$str = mb_convert_encoding($str, "UTF-8", "GB2312");
preg_match_all("/(.{10}$temp.{10})/su", $str, $matches, PREG_SET_ORDER);
print_r($matches);
?>

这样?楼上回答的不是很好么。。。呵呵

$str_arr = preg_split('|域名|',$str);
这种简单的匹配不建议使用正则表达式,用php的explode()函数就可以了。
$str_arr = explode("域名",$str);
具体取关键词左右的文字是什么意思,是取该关键字前100个字,和该关键字后100个字码。如果是这样那就要用substr来截取一下了。注意要考虑汉字与字符的区别。
刚才测了一下,程序确实有点问题,现在修改一下。
function cnsubstr