好的,这是输入消息:
你有耳朵 你有一个冰块
你有一只狗 你有一个苹果 你有一块石头
我正在尝试获得这样的输出:
耳
冰块
狗
苹果
摇滚
我该如何做到这一点?
以下是我目前的代码:
<?php
$str = $_POST["txtarea"];
preg_match_all('/You have (a|an) (.*)/', $str, $matches);
array_shift($matches);
foreach($matches[0] as $child)
{
echo $child;
}
?>
整个(a | an)部分无效。
答案 0 :(得分:8)
您的匹配位于$matches[2]
元素中。
0
- 是整个匹配的字符串
1
- 第一组(您的情况为a|an
)
2
- 必填组
要排除您使用?:
提示的群组,例如(?:a|an)
PS:对于“a或an”匹配,实际上可以使用不需要括号的an?
答案 1 :(得分:0)
<?php
$str = 'You have an ear
You have an ice cube
You have a dog
You have an apple
You have a rock';
preg_match_all('/You have (a|an) (.*)/', $str, $matches);
foreach($matches[2] as $child)
{
echo $child;
}
你正在迭代数组的错误元素