📄 mysql实例-2.htm
字号:
<TD class=code
bgColor=#e6e6e6><font color="#000000">$newstring=ereg_replace(<regexp>,<replacewith>,<oldstring>);</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
在这里,<regexp>是一个正则表达式,<replacewith>是我们用来替换<regexp>在<oldstring>中匹配的部分的字符串。这个函数返回替换后的字符串。在上面的代码中,新的字符串被存储在$newstring中。<BR>
eregi_replace,和我们预想的一样,基本上等同于ereg_replace,只是它要匹配时不考虑字母的大小写。<BR>
现在我们已经准备好建立我们自己的标志语言了。<BR>
<BR>
黑体和斜体<BR>
让我们首先实现建立文本的黑体和斜体的标志。我们定义[B]开始黑体文本,而[EB]结束一个黑体文本。明显地,我们需要将[B]替换为<B>,而将[EB]替换为</B>。使用eregi_replace这将变得很简单:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">$joketext=eregi_replace("[b]","<B>",$joketext);<BR>
$joketext=eregi_replace("[eb]","</B>",$joketext);<BR>
</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
请注意,因为[在正则表达式中通常是指一组可接受的字符的开始,所以我们在前面加了一个反斜杠以去除其特殊的含义。而没有了[,]也不再具有特殊的含义,因此不需要反斜杠,当然,如果你想做得更彻底,你也可以在前面添加一个反斜杠。<BR>
另外还请注意,我们在这里使用的是eregi_replace,它是对大小写不敏感的,因此[B]和[b]在我们自己的标志语言会起到同样的作用。<BR>
斜体可以通过同样的方法实现:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">$joketext=eregi_replace("[i]","<I>",$joketext);<BR>
$joketext=eregi_replace("[ei]","</I>",$joketext);<BR>
</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
分段<BR>
要实现分段和前面我们实现黑体和斜体一样,甚至还更为简单。因为用户在将内容录入到表单域中时,会使用回车键来格式化文本,我们使用单个的换行符()来代表换行(<BR>),而两个换行符(
)则代表分段(<P>)。当然,由于PC会用一对换行-回车符()来表示新的一行,我们首先需要删除回车符,代码将是这样的:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">//删除回车符<BR>
$joketext=ereg_replace("","",$joketext);<BR>
//处理分段<BR>
$joketext=ereg_replace("","<P>",$joketext);<BR>
//处理换行<BR>
$joketext=ereg_replace("","<BR>",$joketext);<BR>
</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
这就是我们想要的!现在文本可以象用户所预期的那样分段了,而他们甚至不需要学习任何特殊的标志。<BR>
<BR>
超链接<BR>
虽然在笑话的内容中支持超链接似乎很可笑,但在其它应用程序中经常会有这种应用。超链接要比简单地将一些代码转换成HTML标志稍微复杂一些。因为我们同时要输出URL和链接显示的内容。<BR>
<BR>
这里,我们需要用到ereg_replace和eregi_replace的另一个特征了。通过圆括号将正则表达式分成几部分,你可以“获得”匹配的文本中相应的部分并在替代的字符串中用代码\n表示,这里n中的1表示正则表达式第一个圆括号中的部分,2表示第二个,一直到9表示第9个。请先参考下面的代码:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">$text="banana";<BR>
$text=eregi_replace("(.*)(nana)","\2\1",$text);<BR>
echo($text);//outputs"nanaba"<BR>
</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
在上面的代码中,替代字符串中的\1由ba取代,这对应于正则表达式中的(.*)(零个或更多个非换行符)。\2由nana取代,这对应于正则表达式中的(nana)。<BR>
在建立我们的超链接时可以使用同样的规则。让我们先从一个简单的连接开始,这里链接的文本同时也是URL。我们需要支持下面的语句:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">Visit[L]http://www.php.net/[EL].</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
我们想要输出的相应的HTML代码是这样的:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">Visit<AHREF="http://www.php.net/">http://www.php.net/</A>.</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
首先,我们需要一个正则表达式以匹配这种格式的链接。这个正则表达式将是这样的:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">[L][-_./a-zA-Z0-9!&%#?,'=:~]+[EL]</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
我们又在[L]和[EL]的前面用了反斜杠,这标志着它们将按字面意思解释。我们使用了方括号列出了我们认为可以作为URL的一部分的所有字符。在这个方括号后面我们使用了一个+表示URL可以由其中的一个或多个字符组成。<BR>
要输出我们的链接,我们需要取出URL同时作为A标签的HREF属性以及链接的文字来输出。要取出URL,我们需要在我们的正则表达式的相应的部分上加上圆括号:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">[L]([-_./a-zA-Z0-9!&%#?,'=:~]+)[EL]</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
于是我们用下面的代码对链接进行转换:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">$joketext=ereg_replace(<BR>
"[L]([-_./a-zA-Z0-9!&%#?,'=:~]+)[EL]",<BR>
"<AHREF="\1">\1</A>",$joketext);<BR>
</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
请注意我们在链接的HTML代码中的双引号前面使用了反斜杠以防止PHP将其误以为是替代字符串的起止引号。总之,\1被这个链接的URL所取代,而输出正是我们所期望的!<BR>
我们还希望支持这样的超链接,那就是链接的文字和他们的URL不一样。这样的链接的格式如下所示:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">Checkout[L=http://www.php.net/]PHP[EL].</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
这是我们的正则表达式:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code
bgColor=#e6e6e6><font color="#000000">[L=([-_./a-zA-Z0-9!&%#?,'=:~]+)]([-_./a-zA-Z0-9!&%#?,'=:~]+)[EL]</font></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
相当混乱,是吗?先不要去管它,你会明白这正是你所需要的,你会同时取出这个链接的URL(\1)和文字(\2)。执行这个转换的PHP代码将是这样的:<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -