2012-03-18 74 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

相关问题