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

作者&投稿:广律 (若有异议请与网页底部的电邮联系)
php正则表达式如何去掉某个符号以后的所有文字内容?~

$str = "做网站哪家最便宜_有速仿站";$str = preg_replace('/_.*/i', "", $str);echo $str;

下面这样:

$str='你文章的内容,里面可能有许多的域名的';
preg_match_all('|(.{,100})域名(.{,100})|', $str, $reg);

匹配之后,每一个域名前的100个字符在$reg[1]数组里面,后面的100个字符在数组$reg[2]里面。

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

if(empty($str)||!is_numeric($strlen)){
return false;
}
if(strlen($str)<=$strlen){
return $str;
}

//得到第$length个字符 并判断是否为非中文 若为非中文
//直接返回$length长的字符串
$last_word_needed=substr($str,$strlen-1,1);
if(!ord($last_word_needed)>128){
$needed_sub_sentence=substr($str,0,$strlen);
return $needed_sub_sentence;
}else{
for($i=0;$i<$strlen;$i++){
if(ord($str[$i])>128){
$i++;
}
}//end of for
$needed_sub_sentence=substr($str,0,$i);
return $needed_sub_sentence;
}
}
//程序部分
$str_arr = explode(",",$str);
$num = count($str_arr);
for($i=0;$i<$num;$i++){
if($i == 0){
$outstr = strrev(cnsubstr(strrev($str_arr[$i]),200));
}elseif($i == ($num-1)){
$outstr = cnsubstr($str_arr[$i],200);
}else{
$outstr1 = strrev(cnsubstr(strrev($str_arr[$i]),200));
$outstr = cnsubstr($str_arr[$i],5);
}
echo $outstr;
echo " <hr> ";
echo $outstr1;
echo " <hr> ";
}

<?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);
?>

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


java中和javascript中的函数、正则表达式、数组、选择结构和循环函数...
第二种、用正则表示对象,这块不常用,要写样例还需要查api参考,不给了。java常用的正则表达式也是两种:第一种、java.util包中提供的,这个也要查api不谢样例了;第二种、第三方提供的,传说效率很高,我倒是没发现。名字忘记了,我一般用spring中用的那个,平时写的程序不在这台电脑上,不好查,...

js正则匹配符号中间
按照你的要求编写的Javascript语言的匹配符号中间数据的程序如下 var str='"tag":"0","hpmax":"330","actortype":"1"\\r\\n"tag":"1","hpmax":"340","actortype":"1"\\r\\n"tag":"2","hpmax":"350","actortype":"1"\\r\\n"tag":"3","hpmax":"360"...

HP中我想在一段html代码的两边加东西,该如何做?
php的替换就可以了,没必要用正则,str = str_replace("我要红","我要红",$str);

不能输入特殊字符,但可以输入@_.的正则表达式
"^(?=[0-9a-zA-Z@_.]+$)" --false为有其他特殊字符

php的主要用途是什么
用这种方法,还可以编写跨平台的应用程序。PHP-GTK 是 PHP 的一个扩展,在通常发布的 PHP 包中并不包含它。如果对 PHP-GTK 感兴趣,请访问其? 网站以获取更多信息。PHP 能够在所有的主流操作系统上使用,包括 Linux、Unix 的各种变种(包括 HP-UX、Solaris 和 OpenBSD)、Microsoft Windows、Mac OS...

优美段落
(2)请在"友谊""勇敢""信任"中任选一个词,仿写两句话。 dWX(y 虚伪和欺诈产生罪恶。([美]爱迪生) 蚜虫吃青草,锈吃铁,虚伪吃灵魂。([俄]契诃夫) i~ (3)一个人愈知道时间的价值,就愈感觉失去时间的痛苦。(但丁) Eqhp(g 生活好比旅行,理想是旅行的路线,失去了路线,只好停止前进。(雨果) 6D 人们若是...

描写心理活动的段落(200字)快!
(2)请在"友谊""勇敢""信任"中任选一个词,仿写两句话。 dWX(y 虚伪和欺诈产生罪恶。([美]爱迪生) 蚜虫吃青草,锈吃铁,虚伪吃灵魂。([俄]契诃夫) i~ (3)一个人愈知道时间的价值,就愈感觉失去时间的痛苦。(但丁) Eqhp(g 生活好比旅行,理想是旅行的路线,失去了路线,只好停止前进。(雨果) 6D 人们若是...

秦军功奖励制度和日本武士道精神谁厉害???
不过毕竟秦比日本战国早太多年。不知道青铜和初级冶铁的箭头能够有效杀伤福岛正则的士兵。如果近战,估计铁器时代的日本刀与长枪会更占优势。至于士气,应该都能达到100;没有什么差别。体力上秦军应该更好,但日本的护甲应该会更有优势--即HP高。具体最终结果,真的是关羽战秦琼不好说了。

集群和负载均衡的区别 nginx
集群系统 (Cluster)主要解决下面几个问题:高可靠性(HA):利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。高性能计算(HP):即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。负载平衡...

正则表达式
正则经常用于js 判断手机号,邮箱等,通过简单的办法来实现强大的功能 符号解释 字符 描述 \\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\\n' 匹配一个换行符。序列 '\\\\' 匹配 "\\" 而 "\\(" 则匹配 "("。^ ...

福州市19357004917: 如何用正则表达式进行字符串分割 -
迟承布特: 在 PHP 中可以用正则表达式使得字符串分割的函数是:preg_split.语法如下: Array preg_split(string pattern,string subject,[ ,int limit [, int flags]]) Pattern是进行匹配的正则表达式,subject是要被匹配的字符串,limit是要匹配的次数,flags是一些特殊的标记. 详细的用法可以参考这里: http://www.phpdo.net/index.php/in-php-how-to-use-regular-expressions-to-split-string.html

福州市19357004917: PHP中如何用正则表达式分离出某个关键词前后的文字? -
迟承布特: <?php$temp = 'www.baidu.com';$str = '多谢专家!太详细了!“具体取关键词左右的文字是什么意思,是取该关键字前100个字,和该关键字后100个字码”:是这样的,就是取关键词前、后各一百个字.剩下的我仔细琢磨琢磨~======www....

福州市19357004917: php中怎么写正则表达式匹配一个以上的空格,比如:将'123 456'分割成123,456保存到数组 -
迟承布特: 你可以分两步,第一步ereg_replace('/ +/', ' ', $str)把多个空格变成一个空格,然后$arr = explode(' ', $str)就行了

福州市19357004917: php 怎么用正则表达式从一段内容里提取出一段连续的10位数字 -
迟承布特: 如果是连续的随机数 preg_match("/\d+/i",$str,$match);$matches[0] 就是 如果是非连续的$str = preg_replace("/\D/", “”, $str);$str 就是

福州市19357004917: php如何使用正则表达式提取字符串中的字符(包含数字)?
迟承布特: 可以用 preg_match_all() 例如 要提取字符串 $%654sdf();;454 中的数字和字母 <?php $str="$%654sdf();;454";preg_match_all('/[0-9a-zA-Z]+/',$str,$match);print_r($match);?> 以上代码输出结果为数组 Array ( [0] => Array ( [0] => 654sdf [1] =...

福州市19357004917: php中,如何将一个字串三三分开 -
迟承布特: 按照你的要求将一个字串三三分开的PHP程序如下(要用到正则表达式([a-zA-Z]{3}) 表示3个英文字母一组) 完整的PHP程序如下<?php$str="abcdefghi"; $regex="/([a-zA-Z]{3})/";$result=preg_replace($regex,"$1 ",$str); print_r($result); ?> 运行结果 abc def ghi

福州市19357004917: php中字符串分割 -
迟承布特: 你研究一下 正则表达式 吧.PHP的 split() 函数兼容正则表达式语法.关于以上用法,给个例子你参考: // 分隔符可以是斜线,点,或横线$date = "04/30/1973";list($month, $day, $year) = split ('[/.-]', $date);echo "Month: $month; Day: $day; Year: $year\n";?> 提示 preg_split() 函数使用了 Perl 兼容正则表达式语法,通常是比PHP函数split()更快的替代方案.如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费.

福州市19357004917: 跪求php正则表达式提取表格中的内容并保存为数组 -
迟承布特: $content = ' 截止时间 银行名称 分支数量 所占比例(%) 银行大小20101231 1.中国银行 2,752,881 1.529 大银行2.中国农行 2,513,239 1.396 大银行3.中国建设银行 2,026,790 1.126 大银行4.招商银行 1,594,735 0.886 大银行';$content =explode('',$content);$arr = array(); for($i=2;$i preg_match_all('/(.*)/iU',$content[$i],$match); $arr[] = $match[1]; } print_r($arr);?>

福州市19357004917: 在一段html中 有下面一段代码 我怎样用php+正则表达式将其去掉 <div id=\"displaypagenum\"><p><center> -
迟承布特: 如果仅仅去除这一句代码的标记,可以用str_replace替换掉 如果id不确定,用正则<?php$str = '<div id=\"displaypagenum\"><p><center><span>1</span><a href=mo_shehui_2.xml>2</a><a href=mo_shehui_2.xml>下一页</a><span></span></center></p></div>'; echo preg_replace("/<div id=[^>]+><p><center>(.+)<\/center><\/p><\/div>/", "\\1",$str);?>

福州市19357004917: php 用正则表达式提取网页内容 -
迟承布特: $str = '第2017-06-08期 微体兔新版馋嘴小面 ';$pattern = "/[\s\S]*]+data-tvid[=\"\']+([^\"\']*)[\"\'][^>]*data-vid[=\"\']+([^\"\']*)[\"\'][\s\S]*/i";$tvid = preg_replace($pattern, "$1", $str);$vid = preg_replace($pattern, "$2", $str);$reg = "/[\s\S]*]...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网