- PHP判斷表達式中括號是否匹配的簡單實例 推薦度:
- 相關(guān)推薦
PHP判斷表達式中括號是否匹配
學(xué)習(xí)PHP語言的時候,初學(xué)者往往會對數(shù)組感到一些棘手。不過在通過深入的學(xué)習(xí)之后,我們會發(fā)現(xiàn),這些其實并沒有想象中的困難。下面小編就為大家?guī)硪黄狿HP判斷表達式中括號是否匹配的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。
復(fù)制代碼 代碼如下:
<table>
<tr><td>aaaa</td></tr>
<tr><td>bbbb</td></tr>
<tr><td>cccc</td></tr>
<tr><td>dddd</td></tr>
</table>
像這種的文本,用PHP的正則表達式怎么匹配??
我最初的想法:
pattern:"/<tr>[.n]*?</tr>"(這個是錯誤的)
想法思路:"."能匹配任意非換行字符,使用"[.n]"組合,使其能夠匹配所有的字符(包括換行符),但天有不測風(fēng)云啊——悲劇了,結(jié)果什么都沒有!
經(jīng)過一番啃骨之后寫了另一個
pattern:"/<tr>(.|n)*?</tr>"(這個是可以)
將“[]”換成"()",使用“|”做一個或選擇,這樣就行了(納悶了,怎么"[]"也是選擇方式的就不行???)
網(wǎng)上也有一答案:
PATTEN: "/<tr>.*?</tr>/is"(很簡潔很方便,贊成此方法)
后記: 怎么"[]"也是選擇方式的就不行???你知道的話別忘了告訴小弟一聲哦……
[]里的.相當(dāng)于.,仔細看正則的說明去吧
涉及到換行一般考慮用模式修正符s
s (PCRE_DOTALL)
如果設(shè)置了這個修飾符, 模式中的點號元字符匹配所有字符, 包含換行符. 如果沒有這個 修飾符, 點號不匹配換行符.
[]里面的是一些范圍或者組合
lz試一下"/<tr>[.]*?</tr>/is"這個就知道了,
還有()很強大的</p
如下所示:
<?php
/**
* title: 判斷表達式中括號是否匹配
* Description: () 匹配 )(不匹配 利用壓棧和出棧
* @author Mr Lv
*/
function isValid($expstr) {
$temp = array();
for ($i=0; $i<strlen($expstr); $i++) {
$ch = $expstr[$i];
switch($ch) {
case '(':
array_push($temp, '(');
break;
case ')':
if (empty($temp) || array_pop($temp) != '(') {
return "缺少左括號(";
}
}
}
return empty($temp) == true ? "表達式匹配" : "缺少右括號)";
}
$expstrA = "(1+3(6*4)-(2+3))()(";
$expstrB = "(1+3(6*4)-(2+3))()";
$expstrC = "(1+3(6*4)-(2+3)))";
echo isValid($expstrA);
echo "<br>";
echo isValid($expstrB);
echo "<br>";
echo isValid($expstrC);
?>
頁面信息:
?
1
2
3
缺少右括號)
表達式匹配
缺少左括號(
【PHP判斷表達式中括號是否匹配】相關(guān)文章:
PHP判斷表達式中括號是否匹配的簡單實例05-31
判斷PHP數(shù)組是否為空的代碼08-26
PHP如何判斷數(shù)組是否為空07-26
PHP判斷遠程url是否有效的幾種方法09-27
PHP中判斷變量為空的方法06-18
php判斷一個數(shù)組是否為有序09-04