phpspider icon indicating copy to clipboard operation
phpspider copied to clipboard

当field有子项的时候,有些问题

Open iamMarkchu opened this issue 7 years ago • 1 comments

当field有子项的时候,且只有一项,选出来是一个字符串的时候

 return count($result) > 1 ? $result : $result[0];    //selector.php 158行
if (!empty($values) && !empty($conf['children']))        //phpspider.php 1784行
                {
                    $child_values = array();
                    // 父项抽取到的html作为子项的提取内容
                    foreach ($values as $child_html) 
                    {
                        // 递归调用本方法, 所以多少子项目都支持
                        $child_value = $this->get_fields($conf['children'], $child_html, $url, $page);
                        if (!empty($child_value)) 
                        {
                            $child_values[] = $child_value;
                        }
                    }
                    // 有子项就存子项的数组, 没有就存HTML代码块
                    if (!empty($child_values)) 
                    {
                        $values = $child_values;
                    }
                }

这里将string做循环,请问是不是有点问题?

iamMarkchu avatar May 11 '17 00:05 iamMarkchu

我也发现这里有问题子项能获得数据但存不进数据库。我是这么解决的:

          else                                          //phpspider.php 1862行
           {
               if (is_array($values)) 
               {
                   if ($repeated) 
                   {
                       $fields[$conf['name']] = $values;
                   }
                   else 
                   {
                       //$fields[$conf['name']] = $values[0];
                      //这里增加代码替换上面的代码
 			foreach($values[0] as $k => $v)
			{
				$fields[$k]=$v;
			}
                   }
               }
               else 
               {
                   $fields[$conf['name']] = $values;
               }

haoyoul avatar Nov 26 '17 10:11 haoyoul