最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
时间:2017-05-10 编辑:简简单单 来源:一聚教程网
最近工作中遇到一个需求,需要在正则匹配页面中,所有可能存在的 form 表单的元素,可能有 input,action,select,textarea等等所有可能的元素,本文给出一个代码示例。感兴趣的朋友们可以参考学习。
实例代码如下
假设页面 1.html 的网页源代码是:
代码如下 | 复制代码 |
*{padding:0;margin:0;font-size:12px;} .tbl{margin:20px auto;border:1px solid #AACCEE;padding:30px 30px;border-radius:4px;} .tbl td{line-height:30px;vertical-align:top;} textarea{resize:none;height:60px;}
| |
昵称: | |
密码: | |
年龄: | |
性别: |
|
地区: |
|
城市: |
|
兴趣: |
|
照片: | |
简介: | |
备注: | |
我们需要获取到这个页面所有 form 表单,及每个 form 表单所包含的各类表单元素,例如:input,select,textarea等等。
匹配的源代码是:
代码如下 | 复制代码 |
$content=file_get_contents('1.html'); $arr_form= get_page_form_data($content); if(empty($arr_form)) { echo'抱歉!未匹配到 form 表单元素'; }else { foreach($arr_formas$k=>$v) { echo'form'.($k+1).': if(!empty($v['action'])) { echo'----action: echo'--------'.$v['action'].' } if(!empty($v['method'])) { echo'----method: echo'--------'.$v['method'].' } if(!empty($v['inputs'])) { echo'----inputs: foreach($v['inputs']as$key=>$value) { echo'--------name:'.$value['name'].' type:'.$value['type'].' value:'.$value['value'].' } } if(!empty($v['textarea'])) { echo'----textarea: foreach($v['textarea']as$key=>$value) { echo'--------name:'.$value['name'].' value:'.$value['value'].' } } if(!empty($v['select'])) { echo'----select: for($m= 0;$m { echo'--------name:'.$v['select'][$m]['name'].' if(!empty($v['select'][$m]['option'])) { foreach($v['select'][$m]['option']as$key=>$value) { echo'------------value:'.$value.' } } } } } } // 获取页面中的 form 表单中的所有 input、textarea 元素中 name、value、type 等属性值 functionget_page_form_data($content) { $arr_form=array(); $form= regular_form_tags($content); for($i= 0;$i { $arr_form[$i]['action'] = regular_form_action($form[1][$i]); $arr_form[$i]['method'] = regular_form_method($form[1][$i]); $input= regular_input_tags($form[2][$i]); for($j= 0;$j { $arr_form[$i]['inputs'][$j]['name'] = regular_input_name($input[0][$j]); $arr_form[$i]['inputs'][$j]['type'] = regular_input_type($input[0][$j]); $arr_form[$i]['inputs'][$j]['value'] = regular_input_value($input[0][$j]); } $textarea= regular_textarea_tags($form[2][$i]); for($k= 0;$k { $arr_form[$i]['textarea'][$k]['name'] = regular_textarea_name($textarea[$k]); $arr_form[$i]['textarea'][$k]['value'] = regular_textarea_value($textarea[$k]); } $select= regular_select_tags($form[2][$i]); for($l= 0;$l { $arr_form[$i]['select'][$l]['name'] = regular_select_name($select[1][$l]); $option= regular_option_tags($select[2][$l]); for($n= 0;$n { $arr_form[$i]['select'][$l]['option'][$n] = regular_option_value($option[$l][$n]); } } } return$arr_form; } // 正则匹配 form 标签 functionregular_form_tags($string) { $pattern='/ preg_match_all($pattern,$string,$result); return$result; } // 正则匹配 form 标签的 action 属性值 functionregular_form_action($string) { $pattern='/action[\s]*?=[\s]*?([\'\"])(.*?)\1/'; if(preg_match($pattern,$string,$result)) { return$result[2]; } returnnull; } // 正则匹配 form 标签的 method 属性值 functionregular_form_method($string) { $pattern='/method[\s]*?=[\s]*?([\'\"])(.*?)\1/'; if(preg_match($pattern,$string,$result)) { return$result[2]; } returnnull; } // 正则匹配 input 标签 functionregular_input_tags($string) { $pattern='/ if(preg_match_all($pattern,$string,$result)) { return$result; } returnnull; } // 正则匹配 input 标签的 name 属性值 functionregular_input_name($string) { $pattern='/name[\s]*?=[\s]*?([\'\"])(.*?)\1/'; if(preg_match($pattern,$string,$result)) { return$result[2]; } returnnull; } // 正则匹配 input 标签的 type 属性值 functionregular_input_type($string) { $pattern='/type[\s]*?=[\s]*?([\'\"])(.*?)\1/'; if(preg_match($pattern,$string,$result)) { return$result[2]; } returnnull; } // 正则匹配 input 标签的 value 属性值 functionregular_input_value($string) { $pattern='/value[\s]*?=[\s]*?([\'\"])(.*?)\1/'; if(preg_match($pattern,$string,$result)) { return$result[2]; } returnnull; } // 正则匹配 textarea 标签 functionregular_textarea_tags($string) { $pattern='/( if(preg_match_all($pattern,$string,$result)) { return$result[1]; } returnnull; } // 正则匹配 textarea 标签的 name 属性值 functionregular_textarea_name($string) { $pattern='/name[\s]*?=[\s]*?([\'\"])(.*?)\1/si'; if(preg_match($pattern,$string,$result)) { return$result[2]; } returnnull; } // 正则匹配 textarea 标签的 name 属性值 functionregular_textarea_value($string) { $pattern='/ if(preg_match($pattern,$string,$result)) { return$result[1]; } returnnull; } // 正则匹配 select 标签 functionregular_select_tags($string) { $pattern='/ preg_match_all($pattern,$string,$result); return$result; } // 正则匹配 select 标签的 option 子标签 functionregular_option_tags($string) { $pattern='/ preg_match_all($pattern,$string,$result); return$result; } // 正则匹配 select 标签的 name 属性值 functionregular_select_name($string) { $pattern='/name[\s]*?=[\s]*?([\'\"])(.*?)\1/si'; if(preg_match($pattern,$string,$result)) { return$result[2]; } returnnull; } // 正则匹配 select 的子标签 option 的 value 属性值 functionregular_option_value($string) { $pattern='/value[\s]*?=[\s]*?([\'\"])(.*?)\1/si'; if(preg_match($pattern,$string,$result)) { return$result[2]; } returnnull; } |
运行效果如下图所示:
这样我们就可以实现获取任意一个页面中的 form 表单所有存在的元素啦!
-
上一个: Laravel怎么实现表单提交
相关文章
- PHP导出数据超时的优化建议解读 10-31
- PHP之mysql位运算解析 10-31
- Laravel实现登录跳转功能解析 10-31
- php双向队列解读 10-31
- Laravel异常上下文解决教程 10-24
- php数组查询元素位置方法介绍 10-24