栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP用正则匹配form表单中所有元素的类型和属性值实例代码

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP用正则匹配form表单中所有元素的类型和属性值实例代码

前言

最近工作中遇到一个需求,需要在正则匹配页面中,所有可能存在的 form 表单的元素,可能有 input,action,select,textarea等等所有可能的元素,本文给出一个代码示例。感兴趣的朋友们可以参考学习。

实例代码如下

假设页面 1.html 的网页源代码是:



 
 
 一个含有 form 表单的登录注册页面
 
 *{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_form as $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 < count($v['select']);$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 等属性值 function get_page_form_data($content) { $arr_form = array(); $form = regular_form_tags($content); for($i = 0;$i < count($form[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 < count($input[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 < count($textarea);$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 < count($select[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 < count($option[$l]);$n ++) { $arr_form[$i]['select'][$l]['option'][$n] = regular_option_value($option[$l][$n]); } } } return $arr_form; } // 正则匹配 form 标签 function regular_form_tags($string) { $pattern = '/(.*?)/si'; preg_match_all($pattern,$string,$result); return $result; } // 正则匹配 form 标签的 action 属性值 function regular_form_action($string) { $pattern = '/action[s]*?=[s]*?(['"])(.*?)1/'; if(preg_match($pattern,$string,$result)) { return $result[2]; } return null; } // 正则匹配 form 标签的 method 属性值 function regular_form_method($string) { $pattern = '/method[s]*?=[s]*?(['"])(.*?)1/'; if(preg_match($pattern,$string,$result)) { return $result[2]; } return null; } // 正则匹配 input 标签 function regular_input_tags($string) { $pattern = '//si'; if(preg_match_all($pattern,$string,$result)) { return $result; } return null; } // 正则匹配 input 标签的 name 属性值 function regular_input_name($string) { $pattern = '/name[s]*?=[s]*?(['"])(.*?)1/'; if(preg_match($pattern,$string,$result)) { return $result[2]; } return null; } // 正则匹配 input 标签的 type 属性值 function regular_input_type($string) { $pattern = '/type[s]*?=[s]*?(['"])(.*?)1/'; if(preg_match($pattern,$string,$result)) { return $result[2]; } return null; } // 正则匹配 input 标签的 value 属性值 function regular_input_value($string) { $pattern = '/value[s]*?=[s]*?(['"])(.*?)1/'; if(preg_match($pattern,$string,$result)) { return $result[2]; } return null; } // 正则匹配 textarea 标签 function regular_textarea_tags($string) { $pattern = '/(.*?)/si'; if(preg_match_all($pattern,$string,$result)) { return $result[1]; } return null; } // 正则匹配 textarea 标签的 name 属性值 function regular_textarea_name($string) { $pattern = '/name[s]*?=[s]*?(['"])(.*?)1/si'; if(preg_match($pattern,$string,$result)) { return $result[2]; } return null; } // 正则匹配 textarea 标签的 name 属性值 function regular_textarea_value($string) { $pattern = '/(.*?)/si'; if(preg_match($pattern,$string,$result)) { return $result[1]; } return null; } // 正则匹配 select 标签 function regular_select_tags($string) { $pattern = '/(.*?)/si'; preg_match_all($pattern,$string,$result); return $result; } // 正则匹配 select 标签的 option 子标签 function regular_option_tags($string) { $pattern = '/.*?/si'; preg_match_all($pattern,$string,$result); return $result; } // 正则匹配 select 标签的 name 属性值 function regular_select_name($string) { $pattern = '/name[s]*?=[s]*?(['"])(.*?)1/si'; if(preg_match($pattern,$string,$result)) { return $result[2]; } return null; } // 正则匹配 select 的子标签 option 的 value 属性值 function regular_option_value($string) { $pattern = '/value[s]*?=[s]*?(['"])(.*?)1/si'; if(preg_match($pattern,$string,$result)) { return $result[2]; } return null; }

运行效果如下图所示:

这样我们就可以实现获取任意一个页面中的 form 表单所有存在的元素啦!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用PHP能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对考高分网的支持。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/41389.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号