⑴ 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 顯示不太友好。你可以採用其它方法顯示匹配結果