⑴ php正则表达式匹配0个或多个指定的字符
proct-1349.html
是对应 test.php?action=proct&rid=1349
那
proct.html
的rid怎么办?为 空?
RewriteRule ^/?([a-zA-Z]{1,})(-([0-9]{1,}))?\.html$ test.php?action=$1&rid=$3
123456789
⑵ php 正则表达式匹配一个字符串的多个值 然后逐一替换掉里面的 不全部替换成一个
举个例子给你看看是不是你想要的。
有个字符串“abcadeafg”,把其中的三个字母a分别替换成x,y,z:
$pattern=array('/a/','/a/','/a/');
$replacement=array('x','y','z');
$subject='abcadeafg';
$res=preg_replace($pattern,$replacement,$subject,1);
echo$res;//xbcydezfg
⑶ php 字符串匹配问题
要想得到第1个#和第2个#之间的字符串,用非贪婪的正则表达式,就可以实现.
完整的php程序如下(注意 这里取第一捕获组的数据,如果有多个子字符串要取,用preg_match_all函数)
<?php
$str="可能有写字#话题xyz#一些乱七八糟的字符#";
$regex="/#(.*?)#/i";
preg_match($regex,$str,$result);
print_r($result[1]);
?>
运行结果
话题xyz
⑷ PHP中如何匹配多个满足正则表达式的字符串
php split -- 用正则表达式将字符串分割到数组中
例子:
<?php
$date = "04/30/1973";
list($month, $day, $year) = split ('[/.-]', $date); // 分隔符可以是斜线,点,或横线
echo "Month: $month; Day: $day; Year: $year \n";
?>
来自:http://peakzhengj.blog.163.com/blog/static/42476992007112411227717/
⑸ php 如何用strstr 查找多个字符 比如$aa="1234567@0" 里查找1或2或@
strstr — 查找字符串的首次出现
string strstr
( string $haystack
, mixed $needle
[, bool $before_needle = false
] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。
$needle只能是字符(串)或者数字.不然会提醒:needle is not a string or an integer
如果一定要用strstr查询字符串 $aa中是否包含1或者2或者@ 可以下面这样:
$aa="1234567@0";
$search=array(1,2,'@');
functiontest($str,$array_search){
foreach($array_searchas$value){
if(strstr($str,$value)!==false){
returntrue;
}
}
returnfalse;
}
//使用方法
$test=test($aa,$search);//true
如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。
建议使用正则表达式简单些如:
$aa="1234567@0";
$search='/[12@]/';
if(preg_match($search,$aa)){
//包含1或者2或者@
}else{
//不包含
}
参考PHP手册网址:
http://php.net/manual/zh/function.strstr.php
⑹ 【php】同一字符串,多个条件,如何高效的匹配
楼主的意思的是看一个字符串里有多少种字符吗?如果是这样可以这样做:
用两个函数处理即可:
$array=explode($str);
$array=array_unique($array);
第一个函数把字符串$str分解成一个数组,赋给$array;
然后去除数组中相同的元素即可,剩下的就是数组在赋给$array即可。
纯手打,望采纳!
⑺ php 正则 匹配 时有多个字符满足条件,如果设置配匹第几个
如何设置,用preg_replace_callback 回调处理就可以了
<?php
$str="abc,def,ghi";
$cons = 1; //控制配匹第几个逗号
$n = 0;
function back($matches) {
global $cons,$n;
if($n==($cons-1)) {
$n++;
return "test";
}elseif($n>($cons-1)){
$n++;
return $matches[0];
}else{
$n++;
return "";
}
}
$str1 = preg_replace_callback("/[^,]*?\,/",'back',$str);
echo $str1;
?>
⑻ php正则字符串,匹配多个字母后边的数字作为参数
按照你的要求编写的PHP正则匹配程序如下
<?php
$str = "r1g2n3s4p5";
$regex="/([rgnsp])(d+)/";
$arr=Array();
preg_match_all($regex,$str,$result);
for($i=0;$i<count($result[1]);$i++){
$arr[$result[1][$i]]=$result[2][$i];
}
var_mp($arr);
?>
⑼ 怎么在php里用正则或匹配几个字符串
function match_number($pattern_arr, $subject)
{
$count = 0;
foreach($pattern_arr as $pattern)
{
if(preg_match("/$pattern/", $subject))
{
$count++;
}
}
return $count;
}
// example
$str1 = 'aaa';
$str2 = 'bbb';
$str3 = 'ccc';
$str4 = 'aaabbb';
$str_arr = array($str1, $str2, $str3);
print_r(match_number($str_arr, $str4));
⑽ php相同文本匹配多个字符
可以尝试如下代码
$regex='#<adata-num="(.*?)"data-chu="to=(.*?)"href="(.*?)">#i';
$str='<adata-num="1"data-chu="to=youku"href="
$matches=array();
if(preg_match_all($regex,$str,$matches,PREG_SET_ORDER)){
mp($matches);
}
测试结果
备注:代码中的 mp 是一个自定义函数,测试结果显示的是这个自定义函数的结果,php 自带的 var_mp 显示不太友好。你可以采用其它方法显示匹配结果