a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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老大指點關于(?!)零寬斷言非匹配的特性后接匹配規則可能無效的問題。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久情趣视频 | 久久久国产精品入口麻豆 | 白色白色在线视频 | 亚洲一级簧片 | 最新中文字幕 | av在线一区二区 | 一区二区三区日韩在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 99精品国产99久久久久久97 | 国产精品久久在线观看 | 国产精品.xx视频.xxtv | 美国一级黄色片 | 成人av自拍 | 青青草av电影 | 热久久免费视频 | 成人免费视频观看视频 | 精品美女在线 | 国产一区二区电影 | 日韩在线观看一区 | 成人av网页 | 看真人视频a级毛片 | 亚洲欧洲精品成人久久奇米网 | 色综合一区二区三区 | 国产超碰人人模人人爽人人添 | 天天摸夜夜操 | 国产美女福利 | 国产91亚洲精品久久久 | 日韩一区二区三区视频在线观看 | 狠狠综合久久av一区二区老牛 | 国产精品69久久久久水密桃 | 日韩中文字幕一区二区 | 国产成人免费视频 | 国产在线国偷精品产拍免费yy | 一区二区三区视频免费在线观看 | 亚洲成成品网站 | 夜夜爽99久久国产综合精品女不卡 | 国产电影一区二区 | 羞羞视频免费观看 | 天天操天天舔天天爽 | 欧美偷拍综合 | 激情毛片 |