我很抱歉我已经要求这个但是找不到解决方案:( 这是我的字符串:(你可以看到它有换行符)
Webname: [webname]
Username: [username]
IP: [IP]
我需要读出方括号内的值。 这是我的代码:
$pattern = '/\[(.|\n)+?\]/'; // i've used the same syntax for my asp projects, always worked
preg_match($pattern, $txt, $matches, PREG_OFFSET_CAPTURE);
echo "matches:".count($matches)."\n\n";
foreach ($matches as $match)
{
echo $match[0]."\n";
}
我只获得了2场比赛:[webname]
和e
(???)
我现在正在摆弄这几个小时并且无法找出问题所在......
任何想法? 感谢
答案 0 :(得分:4)
看起来比以前更复杂。换行符在这里没有任何作用。
$pattern = '/\[(.+?)\]/';
preg_match_all($pattern, $txt, $matches);
print_r($matches);
给出
Array
(
[0] => Array
(
[0] => [webname]
[1] => [username]
[2] => [IP]
)
[1] => Array
(
[0] => webname
[1] => username
[2] => IP
)
)
因此值将在$matches[1]
。如果您想要包含括号($matches[0]
)的值,您还可以省略模式中的括号。
答案 1 :(得分:1)
第一个捕获组(在您的情况下只有一个)位于$matches[1]
答案 2 :(得分:0)
尝试类似
的内容$pattern = '/\[([^\]]+)\]/';
并使用preg_match_all()获取所有匹配项。
答案 3 :(得分:0)
试试这个
$values = array();
foreach (explode("\n", $text) as $line) {
if (preg_match('/([^:]++):[^\s]*+(.*+)/', $line, $match)) {
$values[$match[1]] = $match[2];
}
}
var_dump($values);