php 动态生成表单的简单示例

感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧。
经测试代码如下:

<?PHP
/**
 * 动态生成表单
 *
 * @param 
 * @arrange (编程之家) jb51.cc
 **/
define('VALID_NOT_EMPTY','/.+/');
define('VALID_EMAIL',/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2,4}|museum|travel)$/i);
define('ALPHANUMERIC','/[^a-zA-Z0-9]/');

function displayForm($form,$function) {
$errors = array();

if (!empty($_POST))
{
// Validate form and post it
foreach ($form['fields'] as $field => $options)
{
if (is_array($options) && !empty($options['rule']))
{
// Remove all non-alphanumeric characters for the id/name
$name = preg_replace(ALPHANUMERIC,null,strtolower($field));

if (!preg_match($options['rule'],$_POST[$name]))
{
$errors[] = $field;
}
}
}

if (empty($errors)) {
call_user_func($function,$_POST);
}
}

if (!empty($errors) || empty($_POST))
{
//display any errors
if (!empty($errors))
{
echo '<div class=errors>';
echo 'There was an error processing your form,please check the following fields and resubmit:';

echo '<ul>';
foreach($errors as $field)
{
echo sprintf('<li>%s</li>',$field);
}
echo '</ul>';
echo '</div>';
}

// display the form
echo '<form method=post action=#>';

foreach ($form['fields'] as $field => $options)
{
// PHP will make the array key the keys index if it's not an array
$name = is_array($options) ? $field : $options;

// Remove all non-alphanumeric characters for the id/name
$form_name = preg_replace(ALPHANUMERIC,strtolower($name));

if ($form['escape'] == true) $name = htmlspecialchars($name);

echo sprintf('<label for=%s>%s: </label>',$form_name,$name);

// Default is a standard text input
if (!is_array($options) || !isset($options['type']) || $options['type'] == 'text')
{
echo sprintf('<input type=text id=%s name=%s value=%s />',$_POST[$form_name]);
} elseif ($options['type'] == 'textarea') {
echo sprintf('<textarea id=%s name=%s cols=%s rows=%s>%s</textarea>',$options['cols'],$options['rows'],$_POST[$form_name]);
} elseif ($options['type'] == 'select') {
echo sprintf('<select id=%s name=%s>',$form_name);
foreach ($options['items'] as $item)
{
if ($form['escape'] == true) $item = htmlspecialchars($item);

echo sprintf('<option value=%s>%s</option>',$item,$item);
}
echo '</select>';
}
echo '<br />'. \n;
}

echo '<input type=submit value=Send />';
echo '</form>';
}
}
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中NATIVE的支付实现流程与PC端实现扫码支付流程
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中APP的支付的配置与实现流程
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户信息这个功能的开发流程。 配置 1.首先得在微信公众平台申请一下微信小程序账号并获取到小程序的AppID和AppSecret https://mp.weixin.qq.com/cgi-bin/loginpage?url=%2Fwxamp%2F
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一款开源且免费商用的后台开发框架,它基于ThinkPHP和Bootstrap两大主流技术构建的极速后台开发框架,它有着非常完善且强大的功能和便捷的开发体验,使我逐渐喜欢上了它。
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛,就离不开通讯了,然后我就想到了长连接。这里本人用的是GatewayWorker框架。
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中JSAPI的支付实现流程
服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
将字符重新排列以形成回文(如果可能)在C++中
掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
服务器性能优化必学:掌握PHP8底层开发原理
PHP8新特性和底层开发原理详解:优化应用性能的终极指南
将 C/C++ 代码转换为汇编语言
深入研究PHP8底层开发原理:创建高效可扩展的应用程序
C++程序查找法向量和迹
PHP8底层开发原理实战指南:提升服务器效能
重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
Golang的垃圾回收:为什么它可以减少开发人员的负担?