2012-03-18 72 views
-2

比方說,我有這樣的文字(不作爲PHP代碼來處理):如何獲取第一個引號中的單詞?

$this->validation->set('username','username','trim'); 
$this->validation->set('password','password','trim'); 
$this->validation->set('password2','password2','trim'); 
$this->validation->set('name','name','trim'); 
$this->validation->set('surname','surname','trim'); 

我想set(這是在引號中的每一行後拿到的第一個詞的列表,所以輸出的以前的輸入必須是這樣的:

username 
password 
password2 
name 
surname 

我認爲,這是可能的正則表達式。我的問題是如何獲得PHP中第一個引號的單詞列表?

+0

爲什麼downvote ?? – user1276509 2012-03-18 04:23:06

+0

它顯然是一個PHP代碼,你不應該把它當作文本。 – 2012-03-18 04:24:18

+0

好吧,可以說文本是這樣的:'this-> validation-> set('surname','surname','trim'); 「我的意思是沒有美元符號。那有可能嗎? – user1276509 2012-03-18 04:26:31

回答

4
  • 比方說變量$text從你的問題保存數據。

  • 讓我們來分析正則表達式/set\('(.*?)'/

    • /是分隔符。

    • set\(''分別是字符串set(''

    • .*?是上述兩個字符串之間的(任意)字符的最小數量。

    • 其結果是,這個正則表達式匹配:

      $this->validation->set('username','username','trim');

  • 來存儲陣列$matches[1]中需要的所有字符串,我們可以使用功能preg_match_all

    只需撥打preg_match_all("/set\('(.*?)'/", $text, $matches)即可。

參見:Regex Tutorial - Repetition with Star and Plus - Laziness Instead of Greediness

示例代碼:

$text = <<<EOF 
\$this->validation->set('username','username','trim'); 
\$this->validation->set('password','password','trim'); 
\$this->validation->set('password2','password2','trim'); 
\$this->validation->set('name','name','trim'); 
\$this->validation->set('surname','surname','trim'); 
EOF; 
preg_match_all("/set\('(.*?)'/", $text, $matches); 
print_r($matches[1]); 
-1
$arr = explode("'","this->validation->set('surname','surname','trim')"); 

print_r($arr); 

不知道你爲什麼會想要做這樣的事情,但上面的應該工作

+0

爲什麼投票 – gastonfartek 2012-03-18 05:36:29

相關問題