Chinaunix首页 | 论坛 | 博客
  • 博客访问: 754128
  • 博文数量: 26
  • 博客积分: 8255
  • 博客等级: 中将
  • 技术积分: 934
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-06 01:52
文章分类

全部博文(26)

文章存档

2012年(1)

2011年(8)

2010年(10)

2008年(7)

分类:

2008-08-08 06:30:11

琢磨了一宿,查阅了无数资料(85%都没查到点子上)终于琢磨出来一个小问题。总结一下,忘各位同仁少走弯路,尤其是初学者。

首先说一下什么是正则表达式,它是用来干什么的。
正则表达式其实是为了格式化输入与输出的一套规则,我们为什么要格式化输入与输出呢?举个简单的例子,当用户输入电话号码的时候方法可能千奇百怪,比如我输入7852594635,也可以输入(785)259-4635,或者785-259-4635,电脑怎么办?哪一个才是标准的?哪一个电脑才能接受?这个时候我们就要按照规定的格式输入,但是用户他不理你啊!他该怎么输入,就怎么输入。所以我们做程序的时候就要截获他们的输入,在这个信息进入电脑之前把它修改为标准格式,然后让电脑处理。这个时候,我们就要用到正则表达式了!

晓得了吧。其实很简单。下面我通过一个我在工作中用到的实际例子来解析一下正则表达式的使用:

数据库一侧:

======================================================

field(字段名)==> programs

type(类型)==> set(集合型)

value(值)==> 'Associate Degree in Pharmaceutical Science','Bachelor of Science in Nursing','Bachelor of Science in Pharmaceutical Science','Clinical Research Associates/Coordinator','Master of Science in Clinical Research','Pharmaceutical Technology (PT)','Research Medical Assistant (RMA)','Business Information Systems','PharmD' //这里大家注意,正是因为值的格式中包含了逗号,所以我将来在插入和取值的时候就会遇到麻烦。
=======================================================

实现目的:
从数据库中调用该字段结果集,显示到前端,修改时,以复选框,checkbox形式出现

我们先看看如果不用正则表达式输出的结果:如图
 
大家可以看到,输出结果杂乱无章,一句话没有说完就换行了,不同数据仅仅用逗号隔开,给使用者造成很不爽的感觉。

我们再看一下使用了正则表达式之后的效果:如图

这个时候已经很显然了,结果清晰,规整。
现在我来说一下实现原理,我们如何实现自动换行呢?之前我们看到数据存储的时候不同数据用逗号隔开,我们要做的就是把逗号换成HTML中的换行符
然后打印出来不就行了? 但是我们如何实现一个字符变量的遍历呢?又如何替换字符中的逗号呢?
eregi_replace 函数可以帮我们解决这个问题:
$show=eregi_replace(",","
", $programs);
echo(iconv("utf-8","gb2312",$show));
?>

现在我们需要修改这条记录,需要用复选框来实现。如何把原始的数据显示到复选框中呢?我把代码给出,还请大家自己琢磨哦.

牟哈哈哈哈哈哈。其实是我写累了(里面有一个关键的函数,请参考手册!)
给一下效果图,理解起来更直观

$sql_lead="select * from person_info_basic where id='$lead_id' ";

$result_lead=mysql_query($sql_lead);

while($row=mysql_fetch_array($result_lead))
{
$programs=$row['programs'];
?>

" method="post">




?>

if(ereg('Associate Degree in Pharmaceutical Science', $programs))
{
echo "checked";
}
else
{echo "";}
?> 

value="Associate Degree in Pharmaceutical Science">Associate Degree in Pharmaceutical Science

if(ereg('Bachelor of Science in Nursing', $programs))
{
echo "checked";
}
else
{echo "";}
?> 
value="Bachelor of Science in Nursing">Bachelor of Science in Nursing

if(ereg('Bachelor of Science in Pharmaceutical Science', $programs))
{
echo "checked";
}
else
{echo "";}
?> 
value="Bachelor of Science in Pharmaceutical Science">Bachelor of Science in Pharmaceutical Science

if(ereg('Clinical Research Associates/Coordinator', $programs))
{
echo "checked";
}
else
{echo "";}
?>
value="Clinical Research Associates/Coordinator">Clinical Research Associates/Coordinator

if(ereg('Master of Science in Clinical Research', $programs))
{
echo "checked";
}
else
{echo "";}
?>
value="Master of Science in Clinical Research">Master of Science in Clinical Research

if(ereg('Pharmaceutical Technology', $programs))
{
echo "checked";
}
else
{echo "";}
?>
value="Pharmaceutical Technology (PT)">Pharmaceutical Technology (PT)

if(ereg('Research Medical Assistant', $programs))
{
echo "checked";
}
else
{echo "";}
?>
value="Research Medical Assistant (RMA)">Research Medical Assistant (RMA)

if(ereg('Business Information Systems', $programs))
{
echo "checked";
}
else
{echo "";}
?> 
value="Business Information Systems">Business Information Systems

if(ereg('PharmD', $programs))
{
echo "checked";
}
else
{echo "";}
?> 
value="PharmD">PharmD

阅读(3625) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-03-20 21:11:09

好像没有看到什么特别的

zhengpeisheng2008-08-10 10:19:44

谢谢~~~~不过看不怎么懂..(我是初学者)先收录了