我对正则表达式很弱,需要帮助。我的问题是我必须将所有与给定模式匹配的字符串提取到数组中。请参阅以下问题:
字符串
<?php
$alert_types = array(
'warning' => array('', __l("Warning!") ),
'error' => array('alert-error', __l("Error!") ),
'success' => array('alert-success', __l("Success!") ),
'info' => array('alert-info', __l("For your information.") ),
);?>
Preg_Match守则
preg_match("/.*[_][_][l]['(][''"](.*)[''"][')].*/", $content, $matches);
我只得到第一个匹配,即警告!我预计匹配项将具有以下值:
Warning!, Error!, Success!, For your information.
实际上我正在使用file_get_contents($file)来获取字符串。
谁能帮我解决这个问题。提前谢谢你。
preg_match()
只查找字符串中的第一个匹配项。 使用preg_match_all()
获取所有匹配项。
preg_match_all("/.*__l'([''"](.*?)[''"]').*/", $content, $matches);
$matches[1]
将包含您要查找的字符串数组。
顺便说一句,您不需要所有这些单字符括号。只需将字符放入正则表达式即可。
var_dump($matches);
array(2) {
[0]=>
array(4) {
[0]=>
string(45) " 'warning' => array('', __l("Warning!") ),"
[1]=>
string(52) " 'error' => array('alert-error', __l("Error!") ),"
[2]=>
string(58) " 'success' => array('alert-success', __l("Success!") ),"
[3]=>
string(65) " 'info' => array('alert-info', __l("For your information.") ),"
}
[1]=>
array(4) {
[0]=>
string(8) "Warning!"
[1]=>
string(6) "Error!"
[2]=>
string(8) "Success!"
[3]=>
string(21) "For your information."
}
}