这篇文章主要介绍了PHP用正则匹配form表单中所有元素的类型和属性值的方法,文中给出了完整的实例代码,大家可以直接参考学习,下面来一起看看吧。
前言
最近工作中遇到一个需求,需要在正则匹配页面中,所有可能存在的 form 表单的元素,可能有 input,action,select,textarea等等所有可能的元素,本文给出一个代码示例。感兴趣的朋友们可以参考学习。
实例代码如下
假设页面 1.html 的网页源代码是:
一个含有 form 表单的登录注册页面
我们需要获取到这个页面所有 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'; 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(.*?)<\/form>/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 = '/( .*?<\/textarea[\s]*?>)/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 = '/ (.*?)<\/textarea>/si'; if(preg_match($pattern,$string,$result)) { return $result[1]; } return null; } // 正则匹配 select 标签 function regular_select_tags($string) { $pattern = '/
运行效果如下图所示:
这样我们就可以实现获取任意一个页面中的 form 表单所有存在的元素啦!
总结
以上就是PHP用正则匹配form表单中所有元素的类型和属性值实例代码的详细内容,更多请关注0133技术站其它相关文章!