2014-02-24 67 views
0

我一直試圖找出這個2小時現在沒有成功。我猜想對我來說有點複雜。 我想解析PHP中的腳本文件並向用戶返回一些值。我想的那些是這樣的:正則表達式,找到一個值並將其返回給PHP

_ =對象runFunction等等等等等等

基本上我想是(在一個算法):

  • IF病例(因爲它可能是運行功能)
  • AND該行以_開頭(下劃線) (或者如果可能,在=之前有一個以_開頭的值以確保結果)
  • 然後返回下一個值,在=之前給我。

一般爲99.9%的格式是這樣...但也有小的情況下,它可以是這樣的:

_ = _object runFunction等等等等等等 (以防_在=弄糟之後)。

這裏的任何幫助:)? 感謝

+2

你嘗試過什麼嗎?顯示你的代碼 –

+0

這就是我到目前爲止:'/ \ _ ::([A-Za-z \ /] +)\ runfunction /' – user1033882

回答

0

嘗試類似:

$str = 'YOUR FILE CONTENTS HERE'; 
$match = preg_match_all('/(_[a-zA-Z0-9_]+) ?= ?[a-zA-Z0-9_]+ runFunction/s',$str,$matches); 

var_dump($matches); 

你可能需要添加多行標誌。

+0

哇!謝謝...測試.... – user1033882

+0

它的99.9999%,我想:)但完全忘了,有一個機會_value可以是s_value以及有時....它可能忽略的結果之前有任何其他的_ ?? 如果不是它的好,我會繼續。 但哇這是快的:) – user1033882

+0

也不是不區分大小寫: $ match = preg_match_all('/(_ [a-zA-Z0-9 _] +)?=?[a-zA-Z0-9 _] + (我)runfunction/S',$ holdcontents,$匹配); ?? – user1033882

0

如何

if (preg_match('/^_([^=]+?)(?=\s*=).*runfunction/im', $subject, $regs)) { 
    $result = $regs[1]; 
} else { 
    $result = ""; 
} 

您可以排除最初的「開始」主播是你的底線可能不是在該行

這裏開始是正則表達式本身。結果示於捕獲組1

^_([^=]+?)(?=\s*=).*runfunction 

正則表達式 尋線的開頭 匹配第一個下劃線 捕獲一切不是一個「=」成捕獲組1 提供它後跟0以上空格和等號。然後捕獲所有運行功能。

不區分大小寫,多選擇需要設置

如果第一個下劃線並不需要在該行的開頭,消除了錨。

+0

嗯,不返回任何東西....雖然我正確測試它 – user1033882

+0

它似乎在RegexBuddy工作在這裏也許我的代碼是錯誤的我有簡化正則表達式 - 因爲我正在使用一個編號的捕獲組,所以不需要lookarounds。我還分別發佈了正則表達式。 –

+0

是的,我發現它在regexbuddy中可用,但由於某種原因,它不支持 $ match = preg_match_all (「/^_([^=]+?)(?=\s*=).*runfunc重刑/ IM」,$ holdcontents,$匹配); – user1033882