PHP   发布时间:2019-11-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP用正则匹配form表单中所有元素的类型和属性值实例代码大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

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

实例代码如下

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

一个含有 form 表单的登录注册页面
php" method="post"> LPADding="0" cellspacing="0" class="tbl"> 女 SELEct name="area">
LPADding="0" cellspacing="0" class="tbl"> REMARK" required="">2

我们需要获取到这个页面所有 form 表单,及每个 form 表单所包含的各类表单元素,例如:input,SELEct,textarea等等。

匹配的源代码是:

$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 = '/(.*?)<\/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,$result)) { return $result[2]; } return null; } // 正则匹配 form 标签的 method 属性值 function regular_form_method($String) { $pattern = '/method[\s]*?=[\s]*?([\'\"])(.*?)\1/'; if(preg_match($pattern,$result)) { return $result[2]; } return null; } // 正则匹配 input 标签 function regular_input_tags($String) { $pattern = '//si'; if(preg_match_all($pattern,$result)) { return $result; } return null; } // 正则匹配 input 标签的 name 属性值 function regular_input_name($String) { $pattern = '/name[\s]*?=[\s]*?([\'\"])(.*?)\1/'; if(preg_match($pattern,$result)) { return $result[2]; } return null;

}
// 正则匹配 input 标签的 type 属性值
function regular_input_type($String)
{
$pattern = '/type[\s]?=[\s]?([\'\"])(.?)\1/';
if(preg_match($pattern,$result))
{
return $result[2];
}
return null;
}
// 正则匹配 input 标签的 value 属性值
function regular_input_value($String)
{
$pattern = '/value[\s]
?=[\s]?([\'\"])(.?)\1/';
if(preg_match($pattern,$result))
{
return $result[2];
}
return null;
}
// 正则匹配 textarea 标签
function regular_textarea_tags($String)
{
$pattern = '/(<textarea.?>.?<\/textarea[\s]?>)/si';
if(preg_match_all($pattern,$result))
{
return $result[1];
}
return null;
}
// 正则匹配 textarea 标签的 name 属性值
function regular_textarea_name($String)
{
$pattern = '/name[\s]
?=[\s]?([\'\"])(.?)\1/si';
if(preg_match($pattern,$result))
{
return $result[2];
}
return null;
}
// 正则匹配 textarea 标签的 name 属性值
function regular_textarea_value($String)
{
$pattern = '/<textarea.?>(.?)<\/textarea>/si';
if(preg_match($pattern,$result))
{
return $result[1];
}
return null;
}
// 正则匹配 SELEct 标签
function regular_SELEct_tags($String)
{
$pattern = '/<SELEct(.?)>(.?)<\/SELEct[\s]?>/si';
preg_match_all($pattern,$result);
return $result;
}
// 正则匹配 SELEct 标签的 option 子标签
function regular_option_tags($String)
{
$pattern = '/<option(.
?)>.?<\/option[\s]?>/si';
preg_match_all($pattern,$result);
return $result;
}
// 正则匹配 SELEct 标签的 name 属性值
function regular_SELEct_name($String)
{
$pattern = '/name[\s]?=[\s]?([\'\"])(.?)\1/si';
if(preg_match($pattern,$result))
{
return $result[2];
}
return null;
}
// 正则匹配 SELEct 的子标签 option 的 value 属性值
function regular_option_value($String)
{
$pattern = '/value[\s]
?=[\s]?([\'\"])(.?)\1/si';
if(preg_match($pattern,$result))
{
return $result[2];
}
return null;
}

运行效果如下图所示:

@H_875_197@

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

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

总结

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

大佬总结

以上是大佬教程为你收集整理的PHP用正则匹配form表单中所有元素的类型和属性值实例代码全部内容,希望文章能够帮你解决PHP用正则匹配form表单中所有元素的类型和属性值实例代码所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:php