麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Regex > 正文

CFC4N小試php正則表達式

2020-03-16 21:11:43
字體:
來源:轉載
供稿:網友
要求根據一串字符串,反轉成PHP數組,其給出的字符串為php的print_r打印出來的。
 
 
朋友甲:要求根據一串字符串,反轉成PHP數組,其給出的字符串為php的print_r打印出來的。我們在暫不考慮此方法是否能確保數據的準確性,以及其他意外等情況,僅根據要求寫正則。 
其字符串為 
復制代碼代碼如下:

Array 

[tt] => Array 

[table] => qqttcode 
[hitcode] => 1 

[ww] => Array 

[table] => qqwwcode 
[hitcode] => 

[pp] => Array 

[table] => qqppcode 
[hitcode] => Array 

[table] => qqppcode 
[hitcode] => 



CFC4N給出一下結果: 
復制代碼代碼如下:

$strRge1 = '/(/[([^]]+)]/s?=>/s?)?Array[/s/S]+?/(([^()]|(?R))*/)/i'; 
$arrReturn = array(); 
if (preg_match_all($strRge1,$str,$tt1)) 

$arrReturn = getarray($tt1[0][0]); 

$arrReturn2 = array(); 
foreach ($arrReturn as $k => $v) 

$arrReturn2[$k] = $v[$k]; 

print_r($arrReturn2); 
function getarray ($strContents) 

$arrTemp = array(); 
$strRge = '//[([^]]+)]/s?=>/s?Array[/s/S]+?/(([^()]|(?R))*/)/i'; 
$strReg2 = '//[([^]]+?)]/s?=>/s?([/d/w]+)?/'; 
if (preg_match_all($strRge,$strContents,$strTemp)) 

$num = count($strTemp[1]); 
if ($num > '1') 

for ($i=0; $i<$num; $i++) 

if (preg_match_all($strRge,$strTemp[0][$i],$arrTTT)) 

$arrTemp[$strTemp[1][$i]] = array(); 
$arrTemp[$strTemp[1][$i]] = getarray($strTemp[0][$i]); 

else 

$arrTemp[$strTemp[1][$i]] = $strTemp[0][$i]; 



else 

$arrTemp[$strTemp[1][0]] = array(); 
$arrTemp2 = array(); 
if (preg_match_all($strReg2, $strTemp[0][0],$straa)) 

$num = count($straa[0]); 
for ($i=0; $i<$num-1; $i++) 

$arrTemp2[$straa[1][$i+1]] = $straa[2][$i+1]; 


$arrTemp[$strTemp[1][0]] = $arrTemp2; 


return $arrTemp; 

結果是可以用的。但是發現其只能用于固定的三層嵌套,假如N層的話,無法用這個函數了,后來,我又改造一下那個正則,改為 
復制代碼代碼如下:

$strRge1 = '//[(([^]]+)]/s?=>/s?Array[/s]+?/(([^()])+|(?R))/)+/i'; 

但是,并不能解決問題。。各位看官,您認為,我的誤區在哪里呢? 
附 第一個正則截圖 
CFC4N小試php正則表達式
更改后正則匹配截圖 
CFC4N小試php正則表達式
朋友乙:要求批量給html字符串中a標簽中不包含title屬性的標簽添加title,而且,其title內容為<a href…>到</a>之間的文本。。 
CFC4N給出答案為: 
復制代碼代碼如下:

$str = '<a >ssss</a><a href="ss" >ssss</a><a style="border-left-color: rgb(0, 153, 204); border-left-width: 1px; border-left-style: solid; padding: 0px 3px; margin: 3px auto 0px; width: 640px; background-color: rgb(242, 246, 251); clear: both; border-top-color: rgb(0, 153, 204); border-top-width: 1px; border-top-style: solid; border-right-color: rgb(0, 153, 204); border-right-width: 1px; border-right-style: solid;"> 復制代碼代碼如下:

$str = '<a >ssss</a><a href="ss" >ssss</a><a style="border-left-color: rgb(0, 153, 204); border-left-width: 1px; border-left-style: solid; padding: 0px 3px; margin: 3px auto 0px; width: 640px; background-color: rgb(242, 246, 251); clear: both; border-top-color: rgb(0, 153, 204); border-top-width: 1px; border-top-style: solid; border-right-color: rgb(0, 153, 204); border-right-width: 1px; border-right-style: solid;"> 復制代碼代碼如下:

[url=http://www.sadas.cn]baidu[/url] 

[url=www.ggasdwe.com]百度[/url] 
[url=http://www.qq.com/index.php]QQ[/url] 

[url=http://www.miyifun.com/index.html]其他 

[/url] 
[url=pc.qq.com/index.php]PC QQ[/url] 

其中,字符串中不確定有幾個換行等其他字符,而且,不確定url的UBB標簽中的網址中是否包含http://,不確定二級域名或者三級域名 

CFC4N給出的正則以及PHP代碼如下 
復制代碼代碼如下:

$str = '[url=http://www.sadas.cn]baidu[/url] 

[url=www.ggasdwe.com]百度[/url] 
[url=http://www.qq.com/index.php]QQ[/url] 

[url=http://www.miyifun.com/index.html]其他 

[/url] 
[url=pc.qq.com/index.php]PC QQ[/url]'; 
print_r(preg_replace('%/[url=(http://)?(?:(?!qq/.com)[^/]])*/][/r|/r/n]*([/s/S]+?)[/r|/r/n]*/[/url/]%i','//2',$str)); 

各位看官,您認為這里哪里是多余的?還可以進行哪些正則的優化來提高效率?如果沒看懂,那您的疑問在哪里?

朋友丁:要求讀取squid的配置文件中,起作用的行,也就是沒有#開頭進行注釋的行
其中,squid的配置文件內字符串見附件中
squid的配置文件內容
CFC4N給出正則代碼如下

復制代碼代碼如下:

preg_match_all('/^(?!#).+?$/m', file_get_contents('squid.conf'), $regs); 
print_r($regs[0]); 

運行截圖 
CFC4N小試php正則表達式
看官們,您認為,這個正則還有哪些沒注意到的點?能否正確無誤的匹配到朋友丁所需要的內容?您有疑問嗎?

 

PS:以上正則,均為PCRE引擎。。其中,PHP代碼的正則遞歸(迭代)部分,僅限于支持遞歸正則的引擎代碼適用。。
感謝rex老大指點關于(?!)零寬斷言非匹配的特性后接匹配規則可能無效的問題。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av7777777| chengrenzaixian | 欧美激情综合在线 | 久久国产乱子伦精品 | 国产精品视频一区二区三区四 | 免费看黄色一级片 | 91午夜免费视频 | 九九热国产视频 | 婷婷久久综合九色综合色多多蜜臀 | 国产999精品久久久久 | 国人精品视频在线观看 | 久久精品一区二区三 | 久久久久久久久久久久网站 | 久久久久久艹 | 久章草在线观看 | 美女毛片儿 | 欧美日韩夜夜 | 国产又粗又爽又深的免费视频 | 午夜视频在线观看91 | 午夜精品视频免费观看 | 日韩色电影 | 国产羞羞视频在线免费观看 | 国产午夜精品一区二区三区免费 | 久久精品一二三区白丝高潮 | 黄色片在线观看网站 | 日韩毛片免费观看 | av色先锋 | 午夜精品网 | 日韩一级视频 | 91 视频网站| 91九色视频在线播放 | 一区二区三区欧美在线 | 亚洲成人欧美在线 | 久久久国产一级片 | 在线成人亚洲 | 亚洲99| 高清中文字幕在线 | av日韩一区二区三区 | 久久成人免费观看 | 美女视频黄a视频免费全过程 | 久草在线最新 |