1.奇怪的strtok函數,可以根據制定參數分解字串,每一部分相當於一個指標,需要配合迴圈語句才能完全執行完,注意第一參數只需給一次就ok了!,例如
[php]$a="xuandun同學:鑒於您的良好表現,特頒布本屆諾貝爾和平獎|假的啦";
$c="|,:";
$b=strtok($a,$c);
while ($b){
echo "$b<br />";
$b=strtok($c);
}[/php]
2.explode函數,分解字串為數組,這個其實前面學習的時候用到過,上例子:
[php]//把1111-11-11 按-分開為數組,並輸出該數組
print_r(explode("-","1111-11-11"));[/php]
3.implode函數,終於把1111-11-11這個超級光棍節分開了,暈用它又恢複了,例:
[php]//先分開他,變成數組了
$a=explode("-","1111-11-11");
//該函數可以合并數組,使用第一個參數指定分隔字元
echo implode("/",$a);[/php]
4.strpos函數搜尋指定字串第一次出現的位置(區分大小寫,姊妹:stripos不區分大小寫),不常用查手冊
5.strrpos函數搜尋指定字串最後一次出現的位置(區分大小寫,姊妹:strripos不區分大小寫),不常用查手冊
6.最頻繁用的str_replace函數,替換字串
[php]echo str_replace("帥哥","美女","我是帥哥");[/php]
7.strstr函數可以擷取從指定字串開始後面的字元,比若說提取郵箱的網域名稱部分
[php]echo ltrim(strstr("admin@xuandun.com","@"),"@");
[/php]
因為是輸出包括指定函數+後面的字串,所以需要使用ltrim刪除那個指定滴函數,查手冊吧。
8.substr函數,指定位置讀取字串,查手冊吧,寫麻煩
9.統計指定字串出現次數,substr_count函數
10.替換字串內指定位置開始重新寫為新的內容,substr_replace函數
11.剛才提前登場的ltrim函數,從字串開始處刪除字元,包括空格、換行、斷行符號等等。rtrim函數刪除從後面開始,teim函數從2頭開始
12.str_pad函數,把字串填充為指定長度的字串,可以指定填充物,預設空格,更多參數手冊吧
13.count_chars可以計算每個字元的出現頻率,不常用 手冊吧
14.str_word_count可以返回字串裡的所有單詞成數組 不常用 手冊吧
POSIXRegex函數
ereg()和eregi()
ereg_replace()和eregi_replace()
split()和spliti()
ereg()和eregi()ereg()字串匹配函數,eregi()是ereg()函數的忽略大小的版本
文法格式:if (!ereg('^[^./][^/]*$', $userfile))//不匹配格式輸出die
{
die('這是一個非法的檔案名稱!');
}
ereg_replace()和eregi_replace(忽略大小寫)替換
string eregi_replace (“Regex”,“目標替換字元”,“替換目標”)
文法格式:$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "\1was", $string);\1 為繼承第一個整體
echo ereg_replace("(( )is)", "\2was", $string);\2繼承第二個整體
split()和spliti(忽略大小寫)用Regex將字串分割到數組中
list:給數組中的值賦予一些變數
文法格式:$date = "04/30/1973";
list($month, $day, $year) = split ('[/.-]', $date);//列出三個變數對應格式//以什麼形式拆分 拆分誰
echo "Month: $month; Day: $day; Year: $year<br />
";
輸出結果Month: 04; Day: 30; Year: 1973
多行匹配
$rows = file('php.ini'); //將php.ini檔案讀到數組中
//迴圈便曆
foreach($rows as $line)
{
if(trim($line))
{
//將匹配成功的參數寫入數組中
if(eregi("^([a-z0-9_.]*) *=(.*)", $line, $matches)) //迴圈進行多行匹配
{
$options[$matches[1]] = trim($matches[2]);
}
unset($matches);
}
}
//輸出參數結果
print_r($options);
PCRERegex
PCRE全稱為Perl Compatible Regular Expression,意思是Perl相容Regex。
在PCRE中,通常將模式運算式(即Regex)包含在兩個反斜線“/”之間,如“/apple/”。
元字元(Meta-character)
元字元 說明
A 匹配字串串首的原子
Z 匹配字串串尾的原子
b 匹配單詞的邊界 /bis/ 匹配頭為is的字串 /isb/ 匹配尾為is的字串 /bisb/ 定界
B 匹配除單詞邊界之外的任一字元 /Bis/ 匹配單詞“This”中的“is”
d 匹配一個數字;等價於[0-9]
D 匹配除數字以外任何一個字元;等價於[^0-9]
w 匹配一個英文字母、數字或底線;等價於[0-9a-zA-Z_]
W 匹配除英文字母、數字和底線以外任何一個字元;等價於[^0-9a-zA-Z_]
s 匹配一個空白字元;等價於[f
tv]
S 匹配除空白字元以外任何一個字元;等價於[^f
tv]
f 匹配一個換頁符等價於 x0c 或 cL
匹配一個分行符號;等價於 x0a 或 cJ
匹配一個斷行符號符等價於x0d 或 cM
t 匹配一個定位字元;等價於 x09或cl
v 匹配一個垂直定位字元;等價於x0b或ck
oNN 匹配一個八位元字
xNN 匹配一個十六進位數字
cC 匹配一個控制字元
模式修正符(Pattern Modifiers)
i -可同時匹配大小寫字母
M -將字串視為多行
S -將字串視為單行,分行符號做一般字元看待,使“.”匹配任何字元
X -模式中的空白忽略不計
U -匹配到最近的字串
e -將替換的字串作為表達使用
格式:/apple/i匹配“apple”或“Apple”等,忽略大小寫。 /i
PCRE的模式單元
//1 提取第一位的屬性
/^d{2}([W])d{2}\1d{4}$匹配“12-31-2006”、“09/27/1996”、“86 01 4321”等字串。但上述Regex不匹配“12/34-5678”的格式。這是因為模式“[W]”的結果“/”已經被儲存。下個位置“1”引用時,其匹配模式也是字元“/”。
當不需要儲存匹配結果時使用非儲存模式單元“(?:)”
例如/(?:a|b|c)(D|E|F)\1g/ 將匹配“aEEg”。在一些Regex中,使用非儲存模式單元是必要的。否則,需要改變其後引用的順序。上例還可以寫成/(a|b|c)(C|E|F)2g/。