众所周知,php在不同的系统中输出换行符(也就是回车)是不同的。
在windows中是\r\n
而在linux中则直接是\n
这样的话问题就产生了,当我们需要输出换行符时,如何判断当前服务器的系统,然后根据不同的系统输出不同的换行符呢?
当然你也可以在不同的系统上人工判断,然后修改源文件,不过那样的话我想还是比较麻烦的,所以最简单的方法还是交给服务器去做吧!
首先,先让我们来认识php中的两个常量:
DIRECTORY_SEPARATOR:路径分隔符,linux上是‘/’,windows上是‘\’
PATH_SEPARATOR:include多个路径使用,在linux中是‘:’,但在windows中是‘;’。
这2个常量的使用能够避免不同平台的兼容性问题。
这样我们就可以简单的用这两个常量来判断当前服务器的操作系统了。
echo ‘12345′ . “\n” . ‘67890′;
echo ‘xxxx’ . “\r\n” . ‘yyyy’;
if (PATH_SEPARATOR == ‘:’)//判断是否为linux系统
//也可以用if (DIRECTORY_SEPARATOR == ‘/’)
echo ‘abcdefg’ . “\n” . ‘hijklmn’;//为linux系统
else
echo ‘opqrst’ . “\r\n” . ‘uvwxyz’;//为windows系统
最终,输出结果为
如果是linux系统
12345
67890
xxxxyyyy
abcdefg
hijklmn
如果是windows系统
1234567890
xxxx
yyyy
opqrst
uvwxyz
话说今天研究wordpress又遇到了一点小困难,但本着不断学习的精神,我坚持的在google与baidu间切换搜索着,一个字“累啊”……啊……不好意思,引号多框了一个字,呵呵……
事情是样子的,今天在看完《我的团长我的团》的A片(注)后,我间接性无意识的有意想给我的主题在加一个功能。首先我想说的是现在大多数网站的统计都是在统计网站的获得一段统计代码后插入自己网站的网页中,而wordpress则是大多数人会把它插入footer.php里。我想你已经猜到了,我想在后台把这段代码保存在一个<textarea>中然后自己插入到网页中,当然你可能会说不是有这样的插件嘛,找来直接用就行了。但是我说不(原因不明)。
一开始我只是在functions.php中根据我主题的代码环境插入了一下代码来显示一个文本框:
<textarea name=”add_js_to_footer” id=”add_js_to_footer” rows=”6″ cols=”80″ ><?php if (get_option($value['id']) != “”) { echo get_option($value['id']); } else { echo $value['std']; } ?></textarea>
并在footer.php中适当位子插入来显示输入到文本框中的字符串:
<?php echo ${$shortname.”_add_js_to_footer”}; ?>
当我在上面那个文本框输入统计代码后,在网页的footer中并没有正确的插入我输入在<textarea>中的代码。
例如输入:
<script language=”javascript” type=”text/javascript” src=”http://js.users.51.la/2203760.js”></script>
<noscript><a href=”http://www.51.la/?2203760″ target=”_blank”><img alt=”我要啦免费统计” src=”http://img.users.51.la/2203760.asp” style=”border:none” /></a></noscript>
但是在网页的footer中却是:
<script language=”javascript” type=”text/javascript” src=”http://js.users.51.la/2203760.js”></script>
<noscript><a href=”http://www.51.la/?2203760″ target=”_blank”><img alt=”我要啦免费统计” src=”http://img.users.51.la/2203760.asp” style=”border:none” /></a></noscript>
对被比看出来了所有的引号前都加上了一个反斜杠“”,所以这段统计代码也就没用了。
说了这么多就其实最主就是在文本框中输入的带引号等特殊字符串,系统把字符串存到mysql中时会把这些特殊字符转义掉,由于输出是没有做特殊处理就会出现上述情况的发生。所以,只要在输出时把这些反斜杠去掉就OK了。
这是我们就需要这个PHP函数了addslashes(),我们来看下下面对这个函数简单的介绍:
定义和用法
stripslashes() 函数删除由addslashes()函数添加的反斜杠。
语法
stripslashes(string)
参数:string
描述:必需。规定要检查的字符串。
提示和注释
注释:该函数用于清理从数据库或 HTML 表单中取回的数据。
例子:
<?php echo stripslashes("Who's John Adams?"); ?>
输出:
Who’s John Adams?
注:所谓A片就是一个完整的数据分别刻于两张或多张DVD上,而第一张DVD就称为A片。而在本文中的A片真是本人(当然不是本人了,本人在极其一般的情况下是不会干这事的哈)……的……同学在地摊上购得的《我的团长我的团》的完整盗版DVD,据说还不错就看了下,可惜只看完A片,还有一张B片。