以下代码采用$input
类似的方式:"a banana is a fruit"
$t = sscanf($input,"a %s is a %s",$child,$parent);
echo $t.",".$child.",".$parent;
它输出:2,banana,fruit
,这是完美的!
但是,如果$input = "a cow is an animal"
我们得到输出:2,cow,n
. 这并不理想。
理想情况下,因为$input = "a cow is an animal"
它会返回1,cow,
,我将使用一个单独的格式化字符串: "a %s is an %s"
对于这个将返回的输入2,cow,animal
。
那么:为什么第二个a
in之后的空间不能"a %s is a %s"
阻止这个问题的发生?有没有办法明确声明必须在之后出现一个空格a
才能找到正确的匹配项?
希望这是有道理的。任何帮助表示赞赏!
编辑:这是实际的代码:
$teachArray = array("a %s is a %s","an %s is a %s","a %s is an %s","an %s is an %s");
$i=0;
$t = -1;
while( (t <= 2) && (i < count($teachArray)) ) {
$t = sscanf($input,$teachArray[i],$child,$parent);
$i++;
}
所以它会一直循环,直到找到匹配的句子结构,或者用完句子模板(存储在 $teachArray 中)。