⑴ php 中的大括弧怎麼使用
加個.試試。好像不行的吧?
我幫你改一下代碼:
<?php
$expression=true;
if ($expression){
echo "<strong>this is true.</strong>";
}else {
echo "<strong> this is false.</strong>";
?>
這樣的效果是一樣的。
不過如果你要輸出的東西很多。這種方法也不不可以的
⑵ PHP正則匹配不要大括弧內容
//如果你知道字元串的格式一定是這樣的話,可以這么做
$str="{dede:imgtext=''width='540'height='670'}/uploads/131223/1-13122316212H62.jpg{/dede:img}";
$temp1=explode("}",$str);
$temp2=explode("{",$temp1[1]);
$result=$temp2[0];
⑶ php正則表達式eregi()
PHP中的正則式使用
PHP被大量的應用於Web的後台CGI開發,通常是在用戶數據數據之後得出某種結果,但是如果用戶輸入的數據不正確,就會出現問題,比如說某人的生日是」2月30日」!那應該怎麼樣來檢驗暑假是否正確呢? 在PHP中加入了正則表達式的支持,讓我們可以十分方便的進行數據匹配。
2 什麼是正則表達式:
簡單的說,正則表達式是一種可以用於模式匹配和替換的強大工具。在幾乎所有的基於UNIX/LINUX系統的軟體工具中找到正則表達式的痕跡,例如:Perl或PHP腳本語言。此外,JavaScript這種客戶端的腳本語言也提供了對正則表達式的支持,現在正則表達式已經成為了一個通用的概念和工具,被各類技術人員所廣泛使用。
在某個Linux網站上面有這樣的話:」如果你問一下Linux愛好者最喜歡什麼,他可能會回答正則表達式;如果你問他最害怕什麼,除了繁瑣的安裝配置外他肯定會說正則表達式。」
正如上面說的,正則表達式看起來非常復雜,讓人害怕,大多數的PHP初學者都會跳過這里,繼續下面的學習,但是PHP中的正則表達式有著可以利用模式匹配找到符合條件的字元串、判斷字元串是否合乎條件或者用指定的字元串來替代符合條件的字元串等強大的功能,不學實在太可惜了……
3 正則表達式的基本語法:
一個正則表達式,分為三個部分:分隔符,表達式和修飾符。
分隔符可以是除了特殊字元以外的任何字元(比如」/ !」等等),常用的分隔符是」/」。表達式由一些特殊字元(特殊字元詳見下面)和非特殊的字元串組成,比如」[a-z0-9_-]+@[a-z0-9_-.]+」可以匹配一個簡單的電子郵件字元串。修飾符是用來開啟或者關閉某種功能/模式。下面就是一個完整的正則表達式的例子:
/hello.+?hello/is
上面的正則表達式」/」就是分隔符,兩個」/」之間的就是表達式,第二個」/」後面的字元串」is」就是修飾符。
在表達式中如果含有分隔符,那麼就需要使用轉義符號」",比如」/hello.+?/hello/is」。轉義符號除了用於分隔符外還可以執行特殊字元,全部由字母構成的特殊字元都需要」"來轉義,比如」d」代表全體數字。
4 正則表達式的特殊字元:
正則表達式中的特殊字元分為元字元、定位字元等等。
元字元是正則表達式中一類有特殊意義的字元,用來描述其前導字元(即元字元前面的字元)在被匹配的對象中出現的方式。元字元本身是一個個單一的字元,但是不同或者相同的元字元組合起來可以構成大的元字元。
元字元:
大括弧:大括弧用來精確指定匹配元字元出現的次數,例如」/pre{1,5}/」表示匹配的對象可以是」pre」、」pree」、」preeeee」這樣在」pr」後面出現1個到5個」e」的字元串。或者」/pre{,5}/」代表pre出現0此到5次之間。
加號:」+」字元用來匹配元字元前的字元出現一次或者多次。例如」/ac+/」表示被匹配的對象可以是」act」、」account」、」acccc」等在」a」後面出現一個或者多個」c」的字元串。」+」相當於」{1,}」。
星號:」*」字元用來匹配元字元前的字元出現零次或者多次。例如」/ac*/」表示被匹配的對象可以是」app」、」acp」、」accp」等在」a」後面出現零個或者多個」c」的字元串。」*」相當於」{0,}」。
問號:」?」字元用來匹配元字元前的字元出現零次或者1次。例如」/ac?/」表示匹配的對象可以是」a」、」acp」、」acwp」這樣在」a」後面出現零個或者1個」c」的字元串。」?」在正則表達式中還有一個非常重要的作用,即」貪婪模式」。
還有兩個很重要的特殊字元就是」[ ]「。他們可以匹配」[]「之中出現過的字元,比如」/[az]/」可以匹配單個字元」a」或者」z」;如果把上面的表達式改成這樣」/[a-z]/」,就可以匹配任何單個小寫字母,比如」a」、」b」等等。
如果在」[]「中出現了」^」,代表本表達式不匹配」[]「內出現的字元,比如」/[^a-z]/」不匹配任何小寫字母!並且正則表達式給出了幾種」[]「的默認值:
[:alpha:]:匹配任何字母
[:alnum:]:匹配任何字母和數字
[:digit:]:匹配任何數字
[:space:]:匹配空格符
[:upper:]:匹配任何大寫字母
[:lower:]:匹配任何小寫字母
[:punct:]:匹配任何標點符號
[:xdigit:]:匹配任何16進制數字
另外下面這些特殊字元在轉義符號」"轉義後代表的含義如下:
s:匹配單個的空格符
S:用於匹配除單個空格符之外的所有字元。
d:用於匹配從0到9的數字,相當於」/[0-9]/」。
w:用於匹配字母,數字或下劃線字元,相當於」/[a-zA-Z0-9_]/」。
W:用於匹配所有與w不匹配的字元,相當於」/[^a-zA-Z0-9_]/」。
D:用於匹配任何非10進制的數字字元。
.:用於匹配除換行符之外的所有字元,如果經過修飾符」s」的修飾,」.」可以代表任意字元。
利用上面的特殊字元可以很方便的表達一些比較繁瑣的模式匹配。例如」/d0000/」利用上面的正則表達式可以匹配萬以上,十萬一下的整數字元串。
定位字元:
定位字元是正則表達式中又一類非常重要的字元,它的主要作用是用於對字元在匹配對象中的位置進行描述。
^:表示匹配的模式出現在匹配對象的開頭(和在」[]「裡面不同)
$:表示匹配的模式出現在匹配對象的末尾
空格:表示匹配的模式出現在開始和結尾的兩個邊界之一
「/^he/」:可以匹配以」he」字元開頭的字元串,比如hello、height等等;
「/he$/」:可以匹配以」he」字元結尾的字元串即she等;
「/ he/」:空格開頭,和^的作用一樣,匹配以he開頭的字元串;
「/he /」:空格結束,和$的作用一樣,匹配以he結尾的字元串;
「/^he$/」:表示只和字元串」he」匹配。
括弧:
正則表達式除了可以用戶匹配,還可以用括弧」()」來記錄需要的信息,儲存起來,給後面的表達式讀取。比如:
/^([a-zA-Z0-9_-]+)@([a-zA-Z0-9_-]+)(.[a-zA-Z0-9_-])$/
就是記錄郵件地址的用戶名,和郵件地址的伺服器地址(形式為[email protected]之類的),在後面如果想要讀取記錄下來的字元串,只是需要用」轉義符+記錄的次序」來讀取。比如」1〃就相當於第一個」[a-zA-Z0-9_-]+」,」2〃相當於第二個([a-zA-Z0-9_-]+),」3〃就是第三個(.[a-zA-Z0-9_-])。但是在PHP中,」"是一個特殊的字元,需要轉義,所以」"到了PHP的表達式中就應該寫成」1〃。
其他特殊符號:
「|」:或符號」|」和PHP裡面的或一樣,不過是一個」|」,而不是PHP的兩個」||」!意思就是可以是某個字元或者另一個字元串,比如」/abcd|dcba/」可能匹配」abcd」或者」dcba」。
5 貪婪模式:
前面在元字元中提到過」?」還有一個重要的作用,即」貪婪模式」,什麼是
⑷ php 正則表達式符號問題
在這個正則表達式中 {} 就是//
preg_match 這個函數源於perl的正則,在perl的正則中分界符可以很多的成對分隔符
這里沒有使用// 的原因是正則表達式中有/這樣的字元,使用//分隔的話需要對其中的/進行轉義
你還可以把{}換成## []試試,應該都是可以的
⑸ 正則 匹配大括弧內的逗號
這個確實比較困難啊。
主要難度在你的大括弧的嵌套。
如果你的大括弧的嵌套是成對出現的,我倒是有個思路,如果可行,你倒是可以試一下:
1、正則語句:\{[^\{\}]+\}
這句話可以取到最內層的「{...}」,如果沒有嵌套就直接取出來了,
比如:廣州{南海,順德,三水},佛山{南海,順德,三水,{shanghai,{aaaaa,aaaaa}}},
取出了:{南海,順德,三水}和{aaaaa,aaaaa}
這是可以對取出的這2個替換逗號,然後將大括弧替代成其他字元,比如「#」和「$」,然後再次使用正則匹配,這個就是遞歸了。
2、與上面的類似,不是反其道
正則語句:\}[^\{\}]+{
這句話可以找到「}」「{」之間的不包含「{」「}」的全部數據,也就是說一次性找出大括弧外的數據,這種方法不能找出第一個{之前的數據和最後一個}之後的數據,這個很撿到,檢索一次就好。將這些數據的逗號替換成其他字元,如「#」,然後將其他的逗號替換成你想要的字元,最後將「#」替換回逗號,結束。
個人感覺兩種方法都可行,第二種方法比較簡單,不需要遞歸,僅供參考。
⑹ php正則表達式大括弧後面一個數字不管用
是不是沒加起始和結束符號。
<?php
$str='1234567';
if(preg_match('/^[0-9]{1,6}$/',$str)){
echo"yes";
}else{
echo'no';
}
exit;
⑺ PHP正則表達式提取字元串中尖括弧<>、小括弧()、中括弧[]、大括弧{}中的字元
1、
function f1($str)
{
$result = array();
preg_match_all("/^(.*)(?:<)/i",$str, $result);
return $result[1][0];
}
2、
function f2($str)
{
$result = array();
preg_match_all("/(?:<)(.*)(?:>)/i",$str, $result);
return $result[1][0];
}
3、
function f3($str)
{
$result = array();
preg_match_all("/(?:\()(.*)(?:\))/i",$str, $result);
return $result[1][0];
}
4、
function f4($str)
{
$result = array();
preg_match_all("/(?:\[)(.*)(?:\])/i",$str, $result);
return $result[1][0];
}
5、
function f5($str)
{
$result = array();
preg_match_all("/(?:\{)(.*)(?:\})/i",$str, $result);
return $result[1][0];
}
PS: (?:字元) 表示不捕獲這個字元。貌似PHP不支持將字元換成括弧。
否則的話可以將環視給嵌套進去,就可以循環匹配了。
PS2:環視:(?!) (?=) (?<!) (?<=)
有小於號的在右側匹配,沒有的在左側匹配。感嘆號表示不等,等於號表示相等。
PS3:都過了驗證器的驗證,驗證器見參考資料。
⑻ PHP正則表達式
'/^\s*{(\w+)}\s*=/' 代表「詞首位置起或有空白{1個或以上的字母串(該串編號1)}或有空白」
替換成,'$\\1=' 含義是"$編號1的串="
⑼ php花括弧,大括弧{}幾種使用方法的分析
一、在函數或流程式控制制語句中的使用
例如:function test(){}、if(){}、foreach(){}
在函數中常用的方法就是保持數據在作用域范圍的執行
二、$str{4}在字元串的變數的後面跟上{}大括弧或者中括弧[],裡面填寫了數字,這里是吧字元串變數當成數組處理。舉個例子如下:
<?php
$str='phpernote.com';
echo $str{0}; // 輸出 p
echo $str[1]; // 輸出 h
$str='000';
$str{0}='1';
echo $str; // 輸出 100
注意:利用這一特性可用來檢查某個字元串是否滿足多少長度,使用 isset 的方式替代 strlen 函數,因為 isset 是語言結構,strlen 是函數,所以使用 isset 比使用 strlen 效率更高。比如判斷一個字元串的長度是否小於 5,如下:
if(!isset($str{5})) 比 if(strlen($str)<5) 更好。
三、對於可變變數使用大括弧,比如:{$val},這時候大括弧就是告訴PHP,括起來的部分要當成變數處理。如下例子:
<?php
$array=array('www','name'=>'phpernote','com');
echo "$array['name']";//用此句會報語法錯誤
echo "{$array['name']}";//此句正常,大括弧內的字元將作為變數來處理
注意:${$a[1]} 與${$a}[1] 是完全不同的:
${$a[1]} 這里$a[1]是一個變數;
${$a}[1] 這里$a是一個變數;
這種寫法的好處就是在字元串中引用變數的時候,這樣就可以不使用.運算符,從而減少代碼的輸入量。