php一些字元替換Regex的函數

來源:互聯網
上載者:User

 

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/。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.