758963096d9fa97d044b614e1199e7a2.php 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871
  1. <?php if (!defined('THINK_PATH')) exit(); /*a:2:{s:86:"/home/www/wwwroot/cjq.wngluo.org.cn/vendor/skycaiji/app/admin/view/cpattern/field.html";i:1750210657;s:92:"/home/www/wwwroot/cjq.wngluo.org.cn/vendor/skycaiji/app/admin/view/cpattern/rule_module.html";i:1750210657;}*/ ?>
  2. <form id="form_field" method="post" action="<?php echo url('cpattern/field'); ?>">
  3. <?php echo html_usertoken(); ?>
  4. <input type="hidden" name="is_submit" value="1" />
  5. <input type="hidden" name="objid" value="<?php echo $objid; ?>" />
  6. <div class="form-group">
  7. <div class="input-group">
  8. <span class="input-group-addon" style="background:#f4f4f4;">字段名称</span>
  9. <input type="text" name="field[name]" class="form-control" autocomplete="off" />
  10. </div>
  11. </div>
  12. <div class="form-group">
  13. <div class="input-group">
  14. <span class="input-group-addon" style="background:#f4f4f4;">字段描述</span>
  15. <input type="text" name="field[desc]" class="form-control" autocomplete="off" placeholder="选填" />
  16. </div>
  17. </div>
  18. <div class="form-group c-p-field-source">
  19. <div class="input-group">
  20. <span class="input-group-addon" style="background:#f4f4f4;">数据来源</span>
  21. <select name="field[source]" class="form-control">
  22. <option value="source_url">起始页</option>
  23. <option value="" selected="selected">内容页</option>
  24. </select>
  25. </div>
  26. </div>
  27. <div class="form-group">
  28. <div class="input-group" style="margin-bottom:10px;">
  29. <span class="input-group-addon" style="background:#f4f4f4;">获取方式</span>
  30. <select name="field[module]" class="form-control">
  31. <option value="rule"><?php echo \think\Lang::get('field_module_rule'); ?></option>
  32. <option value="xpath"><?php echo \think\Lang::get('field_module_xpath'); ?></option>
  33. <option value="json"><?php echo \think\Lang::get('field_module_json'); ?></option>
  34. <option value="auto"><?php echo \think\Lang::get('field_module_auto'); ?></option>
  35. <option value="sign"><?php echo \think\Lang::get('field_module_sign'); ?></option>
  36. <optgroup label="数据生成">
  37. <option value="words"><?php echo \think\Lang::get('field_module_words'); ?></option>
  38. <option value="num"><?php echo \think\Lang::get('field_module_num'); ?></option>
  39. <option value="no"><?php echo \think\Lang::get('field_module_no'); ?></option>
  40. <option value="list"><?php echo \think\Lang::get('field_module_list'); ?></option>
  41. <option value="time"><?php echo \think\Lang::get('field_module_time'); ?></option>
  42. </optgroup>
  43. <optgroup label="字段">
  44. <option value="extract">字段提取内容</option>
  45. <option value="merge"><?php echo \think\Lang::get('field_module_merge'); ?></option>
  46. </optgroup>
  47. </select>
  48. </div>
  49. <div id="c_p_field_module">
  50. <div class="c-p-field-module" module="rule">
  51. <?php $_tpl_type = 'rule'; $_tpl_name = 'field'; $_tpl_name_pre = ''; $_tpl_allow_loop = '1';
  52. $_tpl_is_process=($_tpl_name=='data-process')?true:false;
  53. $_tpl_name_id='c_p_'.str_replace(array('[',']'),'_',$_tpl_name).'_'.str_replace(array('[',']'),'_',$_tpl_name_pre);
  54. if($_tpl_type=='rule'): ?>
  55. <div class="form-group">
  56. <label>规则</label>
  57. <div class="input-group">
  58. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule'); ?> class="form-control" rows="3" placeholder="<?php echo \think\Lang::get('tips_match'); ?>"></textarea>
  59. <div class="input-group-addon iga-rt">
  60. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_wildcard'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_wildcard"<?php else: ?>onclick="ruleInsertSign.wildcard('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo \think\Lang::get('sign_wildcard'); ?></a></div>
  61. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_match'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo cp_sign('match'); ?></a></div>
  62. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_group'); ?>" class="blk" <?php if($_tpl_is_process): ?>data-rule-sign="sign_group"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']',{group:1})"<?php endif; ?>>捕获组</a></div>
  63. <div>
  64. <span title="<?php echo \think\Lang::get('tips_regular'); ?>">正则</span>
  65. <a href="javascript:;" title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.tips()"></a>
  66. </div>
  67. </div>
  68. </div>
  69. <p class="help-block">规则中无<?php echo cp_sign('match'); ?>标签时,自动将完全匹配的值保存为<?php echo cp_sign('match'); ?>标签以供拼接调用</p>
  70. </div>
  71. <div class="form-group">
  72. <label>拼接成最终内容</label>
  73. <div class="input-group">
  74. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_merge'); ?> class="form-control" rows="2" placeholder="默认拼接规则中所有<?php echo cp_sign('match'); ?>标签,<?php echo \think\Lang::get('tips_matchn'); ?>"></textarea>
  75. <div class="input-group-addon iga-rt">
  76. <a href="javascript:;" title="调用当前规则中的内容标签" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match_n"<?php else: ?>onclick="ruleInsertSign.matchN('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']','[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule_merge]\']',{def:1})"<?php endif; ?>><?php echo cp_sign('match','N'); ?></a>
  77. </div>
  78. </div>
  79. </div>
  80. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  81. <div class="<?php if($_tpl_is_process): ?>process-extract-rule-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>rule_multi_str"<?php endif; ?>>
  82. <?php if($_tpl_allow_loop): ?>
  83. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_type'); ?> class="form-control">
  84. <option value="">拼接为文本</option>
  85. <option value="loop">循环入库</option>
  86. <option value="list">列表数据,处理后拼接为文本</option>
  87. </select>
  88. <?php endif; ?>
  89. <div class="input-group box-rule-multi-str" style="margin-top:10px;">
  90. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  91. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  92. </div>
  93. </div>
  94. <?php elseif($_tpl_type=='xpath'): ?>
  95. <div class="form-group">
  96. <label>规则</label>
  97. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath'); ?> class="form-control" rows="3" placeholder="xpath规则"></textarea>
  98. </div>
  99. <div class="form-group">
  100. <label>属性</label>
  101. <div class="input-group input-select-custom">
  102. <div class="input-group-btn">
  103. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr'); ?> class="form-control">
  104. <option value="">无</option>
  105. <option value="innerHtml">innerHtml</option>
  106. <option value="outerHtml">outerHtml</option>
  107. <option value="text">text</option>
  108. <option value="value">value</option>
  109. <option value="id">id</option>
  110. <option value="class">class</option>
  111. <option value="name">name</option>
  112. <option value="href">href</option>
  113. <option value="src">src</option>
  114. <option value="style">style</option>
  115. <option value="width">width</option>
  116. <option value="height">height</option>
  117. <option value="alt">alt</option>
  118. <option value="custom">自定义</option>
  119. </select>
  120. </div>
  121. <input type="text" class="form-control" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr_custom'); ?> />
  122. </div>
  123. </div>
  124. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  125. <div class="<?php if($_tpl_is_process): ?>process-extract-xpath-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>xpath_multi_str"<?php endif; ?>>
  126. <?php if($_tpl_allow_loop): ?>
  127. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_type'); ?> class="form-control">
  128. <option value="">拼接为文本</option>
  129. <option value="loop">循环入库</option>
  130. <option value="list">列表数据,处理后拼接为文本</option>
  131. </select>
  132. <?php endif; ?>
  133. <div class="input-group box-xpath-multi-str" style="margin-top:10px;">
  134. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  135. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  136. </div>
  137. </div>
  138. <?php elseif($_tpl_type=='json'): ?>
  139. <div class="form-group">
  140. <label>提取规则</label>
  141. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json'); ?> class="form-control" />
  142. <p class="help-block">直接输入键名,子节点用:a.b.c,通配符*</p>
  143. </div>
  144. <?php if($_tpl_allow_loop): ?>
  145. <div class="form-group">
  146. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_loop'); ?> value="1"> 匹配到多个结果允许循环入库</label></div>
  147. </div>
  148. <?php endif; ?>
  149. <div class="form-group">
  150. <label>结果是数组则转换为</label>
  151. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr'); ?> class="form-control">
  152. <option value="implode">字符串</option>
  153. <option value="jsonencode">json编码</option>
  154. <option value="serialize">序列化</option>
  155. </select>
  156. <div class="input-group<?php if($_tpl_is_process): ?> process-extract-json-arr-implode<?php endif; ?>" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>json_arr_implode"<?php endif; ?> style="margin-top:5px;">
  157. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr_implode'); ?> class="form-control" rows="1" placeholder="输入分隔符"></textarea>
  158. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  159. </div>
  160. </div>
  161. <?php endif; ?>
  162. </div>
  163. <div class="c-p-field-module" module="auto" style="display:none;">
  164. <div class="form-group" style="text-align:center;">
  165. <p>自动提取页面中的内容:</p>
  166. <label class="radio-inline" style="margin-left:0px;">
  167. <input type="radio" name="field[auto]" value="title">标题
  168. </label>
  169. <label class="radio-inline" style="margin-left:5px;">
  170. <input type="radio" name="field[auto]" value="content">正文
  171. </label>
  172. <label class="radio-inline" style="margin-left:5px;">
  173. <input type="radio" name="field[auto]" value="keywords">keywords
  174. </label>
  175. <label class="radio-inline" style="margin-left:5px;">
  176. <input type="radio" name="field[auto]" value="description">description
  177. </label>
  178. <label class="radio-inline" style="margin-left:5px;">
  179. <input type="radio" name="field[auto]" value="url">网址
  180. </label>
  181. <label class="radio-inline" style="margin-left:5px;">
  182. <input type="radio" name="field[auto]" value="html">源码
  183. </label>
  184. <label class="radio-inline" style="margin-left:5px;">
  185. <input type="radio" name="field[auto]" value="header">头信息
  186. </label>
  187. <label class="radio-inline" style="margin-left:5px;">
  188. <input type="radio" name="field[auto]" value="cookie">cookie
  189. </label>
  190. </div>
  191. </div>
  192. <div class="c-p-field-module" module="xpath" style="display:none;">
  193. <?php $_tpl_type = 'xpath'; $_tpl_name = 'field'; $_tpl_name_pre = ''; $_tpl_allow_loop = '1';
  194. $_tpl_is_process=($_tpl_name=='data-process')?true:false;
  195. $_tpl_name_id='c_p_'.str_replace(array('[',']'),'_',$_tpl_name).'_'.str_replace(array('[',']'),'_',$_tpl_name_pre);
  196. if($_tpl_type=='rule'): ?>
  197. <div class="form-group">
  198. <label>规则</label>
  199. <div class="input-group">
  200. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule'); ?> class="form-control" rows="3" placeholder="<?php echo \think\Lang::get('tips_match'); ?>"></textarea>
  201. <div class="input-group-addon iga-rt">
  202. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_wildcard'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_wildcard"<?php else: ?>onclick="ruleInsertSign.wildcard('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo \think\Lang::get('sign_wildcard'); ?></a></div>
  203. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_match'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo cp_sign('match'); ?></a></div>
  204. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_group'); ?>" class="blk" <?php if($_tpl_is_process): ?>data-rule-sign="sign_group"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']',{group:1})"<?php endif; ?>>捕获组</a></div>
  205. <div>
  206. <span title="<?php echo \think\Lang::get('tips_regular'); ?>">正则</span>
  207. <a href="javascript:;" title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.tips()"></a>
  208. </div>
  209. </div>
  210. </div>
  211. <p class="help-block">规则中无<?php echo cp_sign('match'); ?>标签时,自动将完全匹配的值保存为<?php echo cp_sign('match'); ?>标签以供拼接调用</p>
  212. </div>
  213. <div class="form-group">
  214. <label>拼接成最终内容</label>
  215. <div class="input-group">
  216. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_merge'); ?> class="form-control" rows="2" placeholder="默认拼接规则中所有<?php echo cp_sign('match'); ?>标签,<?php echo \think\Lang::get('tips_matchn'); ?>"></textarea>
  217. <div class="input-group-addon iga-rt">
  218. <a href="javascript:;" title="调用当前规则中的内容标签" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match_n"<?php else: ?>onclick="ruleInsertSign.matchN('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']','[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule_merge]\']',{def:1})"<?php endif; ?>><?php echo cp_sign('match','N'); ?></a>
  219. </div>
  220. </div>
  221. </div>
  222. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  223. <div class="<?php if($_tpl_is_process): ?>process-extract-rule-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>rule_multi_str"<?php endif; ?>>
  224. <?php if($_tpl_allow_loop): ?>
  225. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_type'); ?> class="form-control">
  226. <option value="">拼接为文本</option>
  227. <option value="loop">循环入库</option>
  228. <option value="list">列表数据,处理后拼接为文本</option>
  229. </select>
  230. <?php endif; ?>
  231. <div class="input-group box-rule-multi-str" style="margin-top:10px;">
  232. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  233. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  234. </div>
  235. </div>
  236. <?php elseif($_tpl_type=='xpath'): ?>
  237. <div class="form-group">
  238. <label>规则</label>
  239. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath'); ?> class="form-control" rows="3" placeholder="xpath规则"></textarea>
  240. </div>
  241. <div class="form-group">
  242. <label>属性</label>
  243. <div class="input-group input-select-custom">
  244. <div class="input-group-btn">
  245. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr'); ?> class="form-control">
  246. <option value="">无</option>
  247. <option value="innerHtml">innerHtml</option>
  248. <option value="outerHtml">outerHtml</option>
  249. <option value="text">text</option>
  250. <option value="value">value</option>
  251. <option value="id">id</option>
  252. <option value="class">class</option>
  253. <option value="name">name</option>
  254. <option value="href">href</option>
  255. <option value="src">src</option>
  256. <option value="style">style</option>
  257. <option value="width">width</option>
  258. <option value="height">height</option>
  259. <option value="alt">alt</option>
  260. <option value="custom">自定义</option>
  261. </select>
  262. </div>
  263. <input type="text" class="form-control" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr_custom'); ?> />
  264. </div>
  265. </div>
  266. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  267. <div class="<?php if($_tpl_is_process): ?>process-extract-xpath-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>xpath_multi_str"<?php endif; ?>>
  268. <?php if($_tpl_allow_loop): ?>
  269. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_type'); ?> class="form-control">
  270. <option value="">拼接为文本</option>
  271. <option value="loop">循环入库</option>
  272. <option value="list">列表数据,处理后拼接为文本</option>
  273. </select>
  274. <?php endif; ?>
  275. <div class="input-group box-xpath-multi-str" style="margin-top:10px;">
  276. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  277. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  278. </div>
  279. </div>
  280. <?php elseif($_tpl_type=='json'): ?>
  281. <div class="form-group">
  282. <label>提取规则</label>
  283. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json'); ?> class="form-control" />
  284. <p class="help-block">直接输入键名,子节点用:a.b.c,通配符*</p>
  285. </div>
  286. <?php if($_tpl_allow_loop): ?>
  287. <div class="form-group">
  288. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_loop'); ?> value="1"> 匹配到多个结果允许循环入库</label></div>
  289. </div>
  290. <?php endif; ?>
  291. <div class="form-group">
  292. <label>结果是数组则转换为</label>
  293. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr'); ?> class="form-control">
  294. <option value="implode">字符串</option>
  295. <option value="jsonencode">json编码</option>
  296. <option value="serialize">序列化</option>
  297. </select>
  298. <div class="input-group<?php if($_tpl_is_process): ?> process-extract-json-arr-implode<?php endif; ?>" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>json_arr_implode"<?php endif; ?> style="margin-top:5px;">
  299. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr_implode'); ?> class="form-control" rows="1" placeholder="输入分隔符"></textarea>
  300. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  301. </div>
  302. </div>
  303. <?php endif; ?>
  304. </div>
  305. <div class="c-p-field-module" module="words" style="display:none;">
  306. <textarea name="field[words]" class="form-control" rows="10"></textarea>
  307. </div>
  308. <div class="c-p-field-module" module="num" style="display:none;">
  309. <div class="input-group">
  310. <div class="input-group-addon">范围</div>
  311. <input type="number" name="field[num_start]" class="form-control" />
  312. <div class="input-group-addon brl_0 brr_0">到</div>
  313. <input type="number" name="field[num_end]" class="form-control" />
  314. </div>
  315. </div>
  316. <div class="c-p-field-module" module="no" style="display:none;">
  317. <div class="form-group">
  318. <div class="input-group">
  319. <div class="input-group-addon">起始数字</div>
  320. <input type="number" name="field[no_start]" class="form-control" placeholder="默认:1" />
  321. <div class="input-group-addon brl_0 brr_0">递增数</div>
  322. <input type="number" name="field[no_inc]" class="form-control" placeholder="默认:1" />
  323. </div>
  324. </div>
  325. <div class="form-group">
  326. <div class="input-group">
  327. <div class="input-group-addon">补零位数</div>
  328. <input type="number" name="field[no_len]" class="form-control" placeholder="默认不补零,小于位数的数字开头自动补零" />
  329. </div>
  330. </div>
  331. <p class="help-block">注意:自增数字不受采集退出影响会连续记录(测试除外)如需重新开始可以<a href="javascript:;" class="c-p-field-no-reset">点击重置</a></p>
  332. </div>
  333. <div class="c-p-field-module" module="time" style="display:none;">
  334. <div class="input-group" style="margin-bottom:7px;">
  335. <div class="input-group-addon">格式</div>
  336. <input type="text" name="field[time_format]" class="form-control" />
  337. </div>
  338. <div class="help-block" id="c_p_field_time_format_list">
  339. <span>标签:</span>
  340. <ul class="in-line-mg">
  341. <li><a href="javascript:;" data-val="[年]">[年]</a></li>
  342. <li><a href="javascript:;" data-val="[月]">[月]</a></li>
  343. <li><a href="javascript:;" data-val="[日]">[日]</a></li>
  344. <li><a href="javascript:;" data-val="[时]">[时]</a></li>
  345. <li><a href="javascript:;" data-val="[分]">[分]</a></li>
  346. <li><a href="javascript:;" data-val="[秒]">[秒]</a></li>
  347. </ul>
  348. </div>
  349. <div class="input-group">
  350. <div class="input-group-addon">范围随机</div>
  351. <input type="text" name="field[time_start]" class="form-control" placeholder="默认当前时间" autocomplete="off" />
  352. <div class="input-group-addon" style="border-left:0;border-right:0;">到</div>
  353. <input type="text" name="field[time_end]" class="form-control" placeholder="默认当前时间" autocomplete="off" />
  354. <div class="input-group-btn"><button type="button" class="btn btn-default" onclick="$(this).parent().siblings('input:text').val('');">清空</button></div>
  355. </div>
  356. <div class="checkbox"><label><input type="checkbox" name="field[time_stamp]" value="1" /> 转换成时间戳</label></div>
  357. </div>
  358. <div class="c-p-field-module" module="list" style="display:none;">
  359. <div class="form-group">
  360. <label>列表数据</label>
  361. <textarea name="field[list]" class="form-control" rows="3"></textarea>
  362. <p class="help-block">一行一条数据,从列表中抽取数据</p>
  363. </div>
  364. <div class="form-group">
  365. <label>抽取方式</label>
  366. <select name="field[list_type]" class="form-control">
  367. <option value="" selected="selected">随机抽取</option>
  368. <option value="asc">顺序抽取</option>
  369. <option value="desc">倒序抽取</option>
  370. </select>
  371. </div>
  372. </div>
  373. <div class="c-p-field-module" module="merge" style="display:none;">
  374. <textarea name="field[merge]" class="form-control" rows="3"></textarea>
  375. <div id="c_p_field_merge_list" style="margin-top:5px;"></div>
  376. </div>
  377. <div class="c-p-field-module" module="json" style="display:none;">
  378. <?php $_tpl_type = 'json'; $_tpl_name = 'field'; $_tpl_name_pre = ''; $_tpl_allow_loop = '1';
  379. $_tpl_is_process=($_tpl_name=='data-process')?true:false;
  380. $_tpl_name_id='c_p_'.str_replace(array('[',']'),'_',$_tpl_name).'_'.str_replace(array('[',']'),'_',$_tpl_name_pre);
  381. if($_tpl_type=='rule'): ?>
  382. <div class="form-group">
  383. <label>规则</label>
  384. <div class="input-group">
  385. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule'); ?> class="form-control" rows="3" placeholder="<?php echo \think\Lang::get('tips_match'); ?>"></textarea>
  386. <div class="input-group-addon iga-rt">
  387. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_wildcard'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_wildcard"<?php else: ?>onclick="ruleInsertSign.wildcard('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo \think\Lang::get('sign_wildcard'); ?></a></div>
  388. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_match'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo cp_sign('match'); ?></a></div>
  389. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_group'); ?>" class="blk" <?php if($_tpl_is_process): ?>data-rule-sign="sign_group"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']',{group:1})"<?php endif; ?>>捕获组</a></div>
  390. <div>
  391. <span title="<?php echo \think\Lang::get('tips_regular'); ?>">正则</span>
  392. <a href="javascript:;" title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.tips()"></a>
  393. </div>
  394. </div>
  395. </div>
  396. <p class="help-block">规则中无<?php echo cp_sign('match'); ?>标签时,自动将完全匹配的值保存为<?php echo cp_sign('match'); ?>标签以供拼接调用</p>
  397. </div>
  398. <div class="form-group">
  399. <label>拼接成最终内容</label>
  400. <div class="input-group">
  401. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_merge'); ?> class="form-control" rows="2" placeholder="默认拼接规则中所有<?php echo cp_sign('match'); ?>标签,<?php echo \think\Lang::get('tips_matchn'); ?>"></textarea>
  402. <div class="input-group-addon iga-rt">
  403. <a href="javascript:;" title="调用当前规则中的内容标签" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match_n"<?php else: ?>onclick="ruleInsertSign.matchN('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']','[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule_merge]\']',{def:1})"<?php endif; ?>><?php echo cp_sign('match','N'); ?></a>
  404. </div>
  405. </div>
  406. </div>
  407. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  408. <div class="<?php if($_tpl_is_process): ?>process-extract-rule-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>rule_multi_str"<?php endif; ?>>
  409. <?php if($_tpl_allow_loop): ?>
  410. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_type'); ?> class="form-control">
  411. <option value="">拼接为文本</option>
  412. <option value="loop">循环入库</option>
  413. <option value="list">列表数据,处理后拼接为文本</option>
  414. </select>
  415. <?php endif; ?>
  416. <div class="input-group box-rule-multi-str" style="margin-top:10px;">
  417. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  418. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  419. </div>
  420. </div>
  421. <?php elseif($_tpl_type=='xpath'): ?>
  422. <div class="form-group">
  423. <label>规则</label>
  424. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath'); ?> class="form-control" rows="3" placeholder="xpath规则"></textarea>
  425. </div>
  426. <div class="form-group">
  427. <label>属性</label>
  428. <div class="input-group input-select-custom">
  429. <div class="input-group-btn">
  430. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr'); ?> class="form-control">
  431. <option value="">无</option>
  432. <option value="innerHtml">innerHtml</option>
  433. <option value="outerHtml">outerHtml</option>
  434. <option value="text">text</option>
  435. <option value="value">value</option>
  436. <option value="id">id</option>
  437. <option value="class">class</option>
  438. <option value="name">name</option>
  439. <option value="href">href</option>
  440. <option value="src">src</option>
  441. <option value="style">style</option>
  442. <option value="width">width</option>
  443. <option value="height">height</option>
  444. <option value="alt">alt</option>
  445. <option value="custom">自定义</option>
  446. </select>
  447. </div>
  448. <input type="text" class="form-control" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr_custom'); ?> />
  449. </div>
  450. </div>
  451. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  452. <div class="<?php if($_tpl_is_process): ?>process-extract-xpath-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>xpath_multi_str"<?php endif; ?>>
  453. <?php if($_tpl_allow_loop): ?>
  454. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_type'); ?> class="form-control">
  455. <option value="">拼接为文本</option>
  456. <option value="loop">循环入库</option>
  457. <option value="list">列表数据,处理后拼接为文本</option>
  458. </select>
  459. <?php endif; ?>
  460. <div class="input-group box-xpath-multi-str" style="margin-top:10px;">
  461. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  462. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  463. </div>
  464. </div>
  465. <?php elseif($_tpl_type=='json'): ?>
  466. <div class="form-group">
  467. <label>提取规则</label>
  468. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json'); ?> class="form-control" />
  469. <p class="help-block">直接输入键名,子节点用:a.b.c,通配符*</p>
  470. </div>
  471. <?php if($_tpl_allow_loop): ?>
  472. <div class="form-group">
  473. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_loop'); ?> value="1"> 匹配到多个结果允许循环入库</label></div>
  474. </div>
  475. <?php endif; ?>
  476. <div class="form-group">
  477. <label>结果是数组则转换为</label>
  478. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr'); ?> class="form-control">
  479. <option value="implode">字符串</option>
  480. <option value="jsonencode">json编码</option>
  481. <option value="serialize">序列化</option>
  482. </select>
  483. <div class="input-group<?php if($_tpl_is_process): ?> process-extract-json-arr-implode<?php endif; ?>" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>json_arr_implode"<?php endif; ?> style="margin-top:5px;">
  484. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr_implode'); ?> class="form-control" rows="1" placeholder="输入分隔符"></textarea>
  485. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  486. </div>
  487. </div>
  488. <?php endif; ?>
  489. </div>
  490. <div class="c-p-field-module" module="extract" style="display:none;">
  491. <div class="form-group">
  492. <div class="input-group">
  493. <div class="input-group-addon" style="background:#f4f4f4;">选择字段</div>
  494. <select name="field[extract]" class="form-control">
  495. <option value="">请选择</option>
  496. </select>
  497. </div>
  498. </div>
  499. <div class="form-group">
  500. <div class="input-group">
  501. <div class="input-group-addon" style="background:#f4f4f4;">提取内容</div>
  502. <select name="field[extract_module]" class="form-control">
  503. <option value="">请选择</option>
  504. <option value="cover">第一张图片</option>
  505. <option value="rule">规则匹配</option>
  506. <option value="xpath">xpath匹配</option>
  507. <option value="json">json提取</option>
  508. </select>
  509. </div>
  510. </div>
  511. <div class="c-p-field-extract-module" extract-module="rule" style="display:none;">
  512. <?php $_tpl_type = 'rule'; $_tpl_name = 'field'; $_tpl_name_pre = 'extract_'; $_tpl_allow_loop = '1';
  513. $_tpl_is_process=($_tpl_name=='data-process')?true:false;
  514. $_tpl_name_id='c_p_'.str_replace(array('[',']'),'_',$_tpl_name).'_'.str_replace(array('[',']'),'_',$_tpl_name_pre);
  515. if($_tpl_type=='rule'): ?>
  516. <div class="form-group">
  517. <label>规则</label>
  518. <div class="input-group">
  519. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule'); ?> class="form-control" rows="3" placeholder="<?php echo \think\Lang::get('tips_match'); ?>"></textarea>
  520. <div class="input-group-addon iga-rt">
  521. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_wildcard'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_wildcard"<?php else: ?>onclick="ruleInsertSign.wildcard('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo \think\Lang::get('sign_wildcard'); ?></a></div>
  522. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_match'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo cp_sign('match'); ?></a></div>
  523. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_group'); ?>" class="blk" <?php if($_tpl_is_process): ?>data-rule-sign="sign_group"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']',{group:1})"<?php endif; ?>>捕获组</a></div>
  524. <div>
  525. <span title="<?php echo \think\Lang::get('tips_regular'); ?>">正则</span>
  526. <a href="javascript:;" title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.tips()"></a>
  527. </div>
  528. </div>
  529. </div>
  530. <p class="help-block">规则中无<?php echo cp_sign('match'); ?>标签时,自动将完全匹配的值保存为<?php echo cp_sign('match'); ?>标签以供拼接调用</p>
  531. </div>
  532. <div class="form-group">
  533. <label>拼接成最终内容</label>
  534. <div class="input-group">
  535. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_merge'); ?> class="form-control" rows="2" placeholder="默认拼接规则中所有<?php echo cp_sign('match'); ?>标签,<?php echo \think\Lang::get('tips_matchn'); ?>"></textarea>
  536. <div class="input-group-addon iga-rt">
  537. <a href="javascript:;" title="调用当前规则中的内容标签" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match_n"<?php else: ?>onclick="ruleInsertSign.matchN('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']','[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule_merge]\']',{def:1})"<?php endif; ?>><?php echo cp_sign('match','N'); ?></a>
  538. </div>
  539. </div>
  540. </div>
  541. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  542. <div class="<?php if($_tpl_is_process): ?>process-extract-rule-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>rule_multi_str"<?php endif; ?>>
  543. <?php if($_tpl_allow_loop): ?>
  544. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_type'); ?> class="form-control">
  545. <option value="">拼接为文本</option>
  546. <option value="loop">循环入库</option>
  547. <option value="list">列表数据,处理后拼接为文本</option>
  548. </select>
  549. <?php endif; ?>
  550. <div class="input-group box-rule-multi-str" style="margin-top:10px;">
  551. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  552. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  553. </div>
  554. </div>
  555. <?php elseif($_tpl_type=='xpath'): ?>
  556. <div class="form-group">
  557. <label>规则</label>
  558. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath'); ?> class="form-control" rows="3" placeholder="xpath规则"></textarea>
  559. </div>
  560. <div class="form-group">
  561. <label>属性</label>
  562. <div class="input-group input-select-custom">
  563. <div class="input-group-btn">
  564. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr'); ?> class="form-control">
  565. <option value="">无</option>
  566. <option value="innerHtml">innerHtml</option>
  567. <option value="outerHtml">outerHtml</option>
  568. <option value="text">text</option>
  569. <option value="value">value</option>
  570. <option value="id">id</option>
  571. <option value="class">class</option>
  572. <option value="name">name</option>
  573. <option value="href">href</option>
  574. <option value="src">src</option>
  575. <option value="style">style</option>
  576. <option value="width">width</option>
  577. <option value="height">height</option>
  578. <option value="alt">alt</option>
  579. <option value="custom">自定义</option>
  580. </select>
  581. </div>
  582. <input type="text" class="form-control" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr_custom'); ?> />
  583. </div>
  584. </div>
  585. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  586. <div class="<?php if($_tpl_is_process): ?>process-extract-xpath-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>xpath_multi_str"<?php endif; ?>>
  587. <?php if($_tpl_allow_loop): ?>
  588. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_type'); ?> class="form-control">
  589. <option value="">拼接为文本</option>
  590. <option value="loop">循环入库</option>
  591. <option value="list">列表数据,处理后拼接为文本</option>
  592. </select>
  593. <?php endif; ?>
  594. <div class="input-group box-xpath-multi-str" style="margin-top:10px;">
  595. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  596. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  597. </div>
  598. </div>
  599. <?php elseif($_tpl_type=='json'): ?>
  600. <div class="form-group">
  601. <label>提取规则</label>
  602. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json'); ?> class="form-control" />
  603. <p class="help-block">直接输入键名,子节点用:a.b.c,通配符*</p>
  604. </div>
  605. <?php if($_tpl_allow_loop): ?>
  606. <div class="form-group">
  607. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_loop'); ?> value="1"> 匹配到多个结果允许循环入库</label></div>
  608. </div>
  609. <?php endif; ?>
  610. <div class="form-group">
  611. <label>结果是数组则转换为</label>
  612. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr'); ?> class="form-control">
  613. <option value="implode">字符串</option>
  614. <option value="jsonencode">json编码</option>
  615. <option value="serialize">序列化</option>
  616. </select>
  617. <div class="input-group<?php if($_tpl_is_process): ?> process-extract-json-arr-implode<?php endif; ?>" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>json_arr_implode"<?php endif; ?> style="margin-top:5px;">
  618. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr_implode'); ?> class="form-control" rows="1" placeholder="输入分隔符"></textarea>
  619. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  620. </div>
  621. </div>
  622. <?php endif; ?>
  623. </div>
  624. <div class="c-p-field-extract-module" extract-module="xpath" style="display:none;">
  625. <?php $_tpl_type = 'xpath'; $_tpl_name = 'field'; $_tpl_name_pre = 'extract_'; $_tpl_allow_loop = '1';
  626. $_tpl_is_process=($_tpl_name=='data-process')?true:false;
  627. $_tpl_name_id='c_p_'.str_replace(array('[',']'),'_',$_tpl_name).'_'.str_replace(array('[',']'),'_',$_tpl_name_pre);
  628. if($_tpl_type=='rule'): ?>
  629. <div class="form-group">
  630. <label>规则</label>
  631. <div class="input-group">
  632. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule'); ?> class="form-control" rows="3" placeholder="<?php echo \think\Lang::get('tips_match'); ?>"></textarea>
  633. <div class="input-group-addon iga-rt">
  634. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_wildcard'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_wildcard"<?php else: ?>onclick="ruleInsertSign.wildcard('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo \think\Lang::get('sign_wildcard'); ?></a></div>
  635. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_match'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo cp_sign('match'); ?></a></div>
  636. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_group'); ?>" class="blk" <?php if($_tpl_is_process): ?>data-rule-sign="sign_group"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']',{group:1})"<?php endif; ?>>捕获组</a></div>
  637. <div>
  638. <span title="<?php echo \think\Lang::get('tips_regular'); ?>">正则</span>
  639. <a href="javascript:;" title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.tips()"></a>
  640. </div>
  641. </div>
  642. </div>
  643. <p class="help-block">规则中无<?php echo cp_sign('match'); ?>标签时,自动将完全匹配的值保存为<?php echo cp_sign('match'); ?>标签以供拼接调用</p>
  644. </div>
  645. <div class="form-group">
  646. <label>拼接成最终内容</label>
  647. <div class="input-group">
  648. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_merge'); ?> class="form-control" rows="2" placeholder="默认拼接规则中所有<?php echo cp_sign('match'); ?>标签,<?php echo \think\Lang::get('tips_matchn'); ?>"></textarea>
  649. <div class="input-group-addon iga-rt">
  650. <a href="javascript:;" title="调用当前规则中的内容标签" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match_n"<?php else: ?>onclick="ruleInsertSign.matchN('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']','[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule_merge]\']',{def:1})"<?php endif; ?>><?php echo cp_sign('match','N'); ?></a>
  651. </div>
  652. </div>
  653. </div>
  654. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  655. <div class="<?php if($_tpl_is_process): ?>process-extract-rule-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>rule_multi_str"<?php endif; ?>>
  656. <?php if($_tpl_allow_loop): ?>
  657. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_type'); ?> class="form-control">
  658. <option value="">拼接为文本</option>
  659. <option value="loop">循环入库</option>
  660. <option value="list">列表数据,处理后拼接为文本</option>
  661. </select>
  662. <?php endif; ?>
  663. <div class="input-group box-rule-multi-str" style="margin-top:10px;">
  664. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  665. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  666. </div>
  667. </div>
  668. <?php elseif($_tpl_type=='xpath'): ?>
  669. <div class="form-group">
  670. <label>规则</label>
  671. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath'); ?> class="form-control" rows="3" placeholder="xpath规则"></textarea>
  672. </div>
  673. <div class="form-group">
  674. <label>属性</label>
  675. <div class="input-group input-select-custom">
  676. <div class="input-group-btn">
  677. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr'); ?> class="form-control">
  678. <option value="">无</option>
  679. <option value="innerHtml">innerHtml</option>
  680. <option value="outerHtml">outerHtml</option>
  681. <option value="text">text</option>
  682. <option value="value">value</option>
  683. <option value="id">id</option>
  684. <option value="class">class</option>
  685. <option value="name">name</option>
  686. <option value="href">href</option>
  687. <option value="src">src</option>
  688. <option value="style">style</option>
  689. <option value="width">width</option>
  690. <option value="height">height</option>
  691. <option value="alt">alt</option>
  692. <option value="custom">自定义</option>
  693. </select>
  694. </div>
  695. <input type="text" class="form-control" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr_custom'); ?> />
  696. </div>
  697. </div>
  698. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  699. <div class="<?php if($_tpl_is_process): ?>process-extract-xpath-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>xpath_multi_str"<?php endif; ?>>
  700. <?php if($_tpl_allow_loop): ?>
  701. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_type'); ?> class="form-control">
  702. <option value="">拼接为文本</option>
  703. <option value="loop">循环入库</option>
  704. <option value="list">列表数据,处理后拼接为文本</option>
  705. </select>
  706. <?php endif; ?>
  707. <div class="input-group box-xpath-multi-str" style="margin-top:10px;">
  708. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  709. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  710. </div>
  711. </div>
  712. <?php elseif($_tpl_type=='json'): ?>
  713. <div class="form-group">
  714. <label>提取规则</label>
  715. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json'); ?> class="form-control" />
  716. <p class="help-block">直接输入键名,子节点用:a.b.c,通配符*</p>
  717. </div>
  718. <?php if($_tpl_allow_loop): ?>
  719. <div class="form-group">
  720. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_loop'); ?> value="1"> 匹配到多个结果允许循环入库</label></div>
  721. </div>
  722. <?php endif; ?>
  723. <div class="form-group">
  724. <label>结果是数组则转换为</label>
  725. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr'); ?> class="form-control">
  726. <option value="implode">字符串</option>
  727. <option value="jsonencode">json编码</option>
  728. <option value="serialize">序列化</option>
  729. </select>
  730. <div class="input-group<?php if($_tpl_is_process): ?> process-extract-json-arr-implode<?php endif; ?>" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>json_arr_implode"<?php endif; ?> style="margin-top:5px;">
  731. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr_implode'); ?> class="form-control" rows="1" placeholder="输入分隔符"></textarea>
  732. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  733. </div>
  734. </div>
  735. <?php endif; ?>
  736. </div>
  737. <div class="c-p-field-extract-module" extract-module="json" style="display:none;">
  738. <?php $_tpl_type = 'json'; $_tpl_name = 'field'; $_tpl_name_pre = 'extract_'; $_tpl_allow_loop = '1';
  739. $_tpl_is_process=($_tpl_name=='data-process')?true:false;
  740. $_tpl_name_id='c_p_'.str_replace(array('[',']'),'_',$_tpl_name).'_'.str_replace(array('[',']'),'_',$_tpl_name_pre);
  741. if($_tpl_type=='rule'): ?>
  742. <div class="form-group">
  743. <label>规则</label>
  744. <div class="input-group">
  745. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule'); ?> class="form-control" rows="3" placeholder="<?php echo \think\Lang::get('tips_match'); ?>"></textarea>
  746. <div class="input-group-addon iga-rt">
  747. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_wildcard'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_wildcard"<?php else: ?>onclick="ruleInsertSign.wildcard('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo \think\Lang::get('sign_wildcard'); ?></a></div>
  748. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_match'); ?>" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']')"<?php endif; ?>><?php echo cp_sign('match'); ?></a></div>
  749. <div style="display:inline;"><a href="javascript:;" title="<?php echo \think\Lang::get('tips_sign_group'); ?>" class="blk" <?php if($_tpl_is_process): ?>data-rule-sign="sign_group"<?php else: ?>onclick="ruleInsertSign.match('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']',{group:1})"<?php endif; ?>>捕获组</a></div>
  750. <div>
  751. <span title="<?php echo \think\Lang::get('tips_regular'); ?>">正则</span>
  752. <a href="javascript:;" title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.tips()"></a>
  753. </div>
  754. </div>
  755. </div>
  756. <p class="help-block">规则中无<?php echo cp_sign('match'); ?>标签时,自动将完全匹配的值保存为<?php echo cp_sign('match'); ?>标签以供拼接调用</p>
  757. </div>
  758. <div class="form-group">
  759. <label>拼接成最终内容</label>
  760. <div class="input-group">
  761. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_merge'); ?> class="form-control" rows="2" placeholder="默认拼接规则中所有<?php echo cp_sign('match'); ?>标签,<?php echo \think\Lang::get('tips_matchn'); ?>"></textarea>
  762. <div class="input-group-addon iga-rt">
  763. <a href="javascript:;" title="调用当前规则中的内容标签" <?php if($_tpl_is_process): ?>data-rule-sign="sign_match_n"<?php else: ?>onclick="ruleInsertSign.matchN('[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule]\']','[name=\'<?php echo $_tpl_name; ?>[<?php echo $_tpl_name_pre; ?>rule_merge]\']',{def:1})"<?php endif; ?>><?php echo cp_sign('match','N'); ?></a>
  764. </div>
  765. </div>
  766. </div>
  767. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  768. <div class="<?php if($_tpl_is_process): ?>process-extract-rule-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>rule_multi_str"<?php endif; ?>>
  769. <?php if($_tpl_allow_loop): ?>
  770. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_type'); ?> class="form-control">
  771. <option value="">拼接为文本</option>
  772. <option value="loop">循环入库</option>
  773. <option value="list">列表数据,处理后拼接为文本</option>
  774. </select>
  775. <?php endif; ?>
  776. <div class="input-group box-rule-multi-str" style="margin-top:10px;">
  777. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'rule_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  778. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  779. </div>
  780. </div>
  781. <?php elseif($_tpl_type=='xpath'): ?>
  782. <div class="form-group">
  783. <label>规则</label>
  784. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath'); ?> class="form-control" rows="3" placeholder="xpath规则"></textarea>
  785. </div>
  786. <div class="form-group">
  787. <label>属性</label>
  788. <div class="input-group input-select-custom">
  789. <div class="input-group-btn">
  790. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr'); ?> class="form-control">
  791. <option value="">无</option>
  792. <option value="innerHtml">innerHtml</option>
  793. <option value="outerHtml">outerHtml</option>
  794. <option value="text">text</option>
  795. <option value="value">value</option>
  796. <option value="id">id</option>
  797. <option value="class">class</option>
  798. <option value="name">name</option>
  799. <option value="href">href</option>
  800. <option value="src">src</option>
  801. <option value="style">style</option>
  802. <option value="width">width</option>
  803. <option value="height">height</option>
  804. <option value="alt">alt</option>
  805. <option value="custom">自定义</option>
  806. </select>
  807. </div>
  808. <input type="text" class="form-control" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_attr_custom'); ?> />
  809. </div>
  810. </div>
  811. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi'); ?> value="1"> 允许匹配多个结果</label></div>
  812. <div class="<?php if($_tpl_is_process): ?>process-extract-xpath-multi-str<?php endif; ?>" style="display:none;" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>xpath_multi_str"<?php endif; ?>>
  813. <?php if($_tpl_allow_loop): ?>
  814. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_type'); ?> class="form-control">
  815. <option value="">拼接为文本</option>
  816. <option value="loop">循环入库</option>
  817. <option value="list">列表数据,处理后拼接为文本</option>
  818. </select>
  819. <?php endif; ?>
  820. <div class="input-group box-xpath-multi-str" style="margin-top:10px;">
  821. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'xpath_multi_str'); ?> class="form-control" placeholder="多个结果之间分隔符" />
  822. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  823. </div>
  824. </div>
  825. <?php elseif($_tpl_type=='json'): ?>
  826. <div class="form-group">
  827. <label>提取规则</label>
  828. <input type="text" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json'); ?> class="form-control" />
  829. <p class="help-block">直接输入键名,子节点用:a.b.c,通配符*</p>
  830. </div>
  831. <?php if($_tpl_allow_loop): ?>
  832. <div class="form-group">
  833. <div class="checkbox"><label><input type="checkbox" <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_loop'); ?> value="1"> 匹配到多个结果允许循环入库</label></div>
  834. </div>
  835. <?php endif; ?>
  836. <div class="form-group">
  837. <label>结果是数组则转换为</label>
  838. <select <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr'); ?> class="form-control">
  839. <option value="implode">字符串</option>
  840. <option value="jsonencode">json编码</option>
  841. <option value="serialize">序列化</option>
  842. </select>
  843. <div class="input-group<?php if($_tpl_is_process): ?> process-extract-json-arr-implode<?php endif; ?>" <?php if(!$_tpl_is_process): ?>id="<?php echo $_tpl_name_id; ?>json_arr_implode"<?php endif; ?> style="margin-top:5px;">
  844. <textarea <?php echo \util\Tools::cp_rule_module_name($_tpl_name,$_tpl_name_pre,'json_arr_implode'); ?> class="form-control" rows="1" placeholder="输入分隔符"></textarea>
  845. <div class="input-group-addon" style="padding-left:9px;padding-right:9px;"><span title="提示信息" class="glyphicon glyphicon-info-sign icon-info-tips" onclick="ruleInsertSign.cpDelimiterTips()"></span></div>
  846. </div>
  847. </div>
  848. <?php endif; ?>
  849. </div>
  850. </div>
  851. <div class="c-p-field-module" module="sign" style="display:none;">
  852. <div class="form-group">
  853. <textarea name="field[sign]" class="form-control" rows="3" placeholder="填入数据来源页面中区域规则或网址规则里的<?php echo cp_sign('match'); ?>标签"></textarea>
  854. <div id="c_p_field_sign_list" style="margin-top:10px;"></div>
  855. <p class="help-block">如果存在同名标签,实际获取后面的标签</p>
  856. </div>
  857. </div>
  858. </div>
  859. </div>
  860. <div class="form-group form-group-sm">
  861. <button type="submit" class="btn btn-primary btn-block">确定</button>
  862. </div>
  863. </form>
  864. <script type="text/javascript">
  865. <?php if($field): ?>
  866. c_pattern.cpField.init(<?php echo json_encode($field); ?>);
  867. <?php else: ?>
  868. c_pattern.cpField.init();
  869. <?php endif; ?>
  870. </script>