仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2282|回复: 19
打印 上一主题 下一主题

[学习教程] PHP编程:PHP编程:探究字串的奥妙

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:24:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最近陆续的有人问我学习php的心得,现在整理为下面,希望可以对大家有些帮助。编程     在很多Web编程里,字符串老是会被大批地生成和处置的。准确地利用和处置字符串,关于PHP程 序员来讲也一样愈来愈主要了。本文从最复杂的字符串界说一向引诱你到高层字符串处置技能,但愿 对人人有所匡助。
  
1、引号界说字符串
  在PHP中,凡是一个字符串被界说在一对引号中,如:
  'I am a string in single quotes'
"I am a string in double quotes"
  PHP语法剖析器是用成对的引号来判别一个字符串的。因而,一切字符串必需利用统一种单或双 引号来界说入手下手和停止。例如,上面的字串界说是不正当的:
  "I am not a valid string since I have unmatching quote marks'
'Me neither!"
  界说字符串时,只要一种引号被视为界说符,即单引号或双引号。因而,假如一个字符串由双引号入手下手,那末只要双引号被剖析器解析。如许,你就能够在双引号串中包括任何其他字符,乃至单引号。上面的引号串都是正当的:
  $s = "I am a 'single quote string' inside a double quote string";
$s = 'I am a "double quote string" inside a single quote string';
  当PHP碰到与串的开首绝对应的引号时,便以为已到了字符串尾部,因而:
  "Why doesn't "this" work?"
  实践上被PHP语法剖析器分红三个局部:
  "Why doesn't "――包括一个单引号的双引号串
this――过剩的字符,剖析器没法处置" work?" ――通俗字符串
  下面的这个例子妄图在双引号串中包括双引号,而剖析器在碰到第二个双引号时便以为字符串停止了。要到达包括引号的目标, 必需剖析器在碰到串内通俗引号的时分疏忽它的原意,咱们在引号的后面加上一个反斜杠来告知PHP:这个引号是字符串的一局部,准确的暗示办法是如许:
"Why doesn't \"that\" work?"
  在英文字符串中一个罕见的成绩是撇号'的利用,由于它就是一个单引号,而在英文串中非常罕见 (英文一切格)。你必需当心处置这些字符:
  'You\'d better escape your apostrophes'
  可以看到反斜杠在字符串中有他的特别寄义,当咱们需求在字符串中包括反斜杠自己时,需求在
该符号后面多加一个反斜杠。例如:
  $file = "c:\windows\system.ini";
  echo $file; // 打印了局为: c:windowssystem.ini
  $file = "c:\\windows\\system.ini";
  echo $file; // 打印了局为: c:\windows\system.ini
  另外一种字符串界说体例,可以消弭特别字符的懊恼,并且便于援用较长的文本。该字符串界说办法以<<<符号紧跟一个自界说字符串开首,最初一行以该自界说字符串停止,而且必需顶格。

  2、字串的毗连
  字串可使用字串联接符(.)来毗连,如:
  $first_name = 'Charlie';
$last_name = 'Brown';
$full_name = $first_name . ' ' . $last_name;
  罕见的用处是创立大块的HTML字串代码,赋值号 (=) 毗连符 (.) 可以被简写兼并为 (.=) 符号,如:
$html = '<table>';
$html .= '<tr><td>number</td><td>square</td></tr>';
for ( $i=0 ; $i<10 ; $i++) {
  $square = $i * $i;
  $html .= '<tr><td>' . $i . '</td><td>' . $square . '</td></tr>';
  }
$html .= '</table>';

  3、在字串中利用变量
  这个功效让你不必利用毗连符号来粘和大批的复杂字符串。PHP答应咱们在双引号串中直接包括字 串变量,咱们可以发明上面的两个字串的处置了局是不异的。
  $full_name = $first_name . ' ' . $last_name;
$full_name = "$first_name $last_name";
  单引号串和双引号串在PHP中的处置是不不异的。双引号串中的内容可以被注释并且交换,而单引 号串中的内容总被以为是通俗字符。例如:
$foo = 2;
echo "foo is $foo"; // 打印了局: foo is 2
echo 'foo is $foo'; // 打印了局: foo is $foo
echo "foo is $foo\n"; // 打印了局: foo is 2 (同时换行)
echo 'foo is $foo\n'; // 打印了局: foo is $foo\n
  正如你所看到的,在单引号串中乃至反斜杠也得到了他的扩大寄义(除拔出反斜杠\\和拔出单引号\')。所以,当你想在字串中停止变量代换和包括\n(换行符)等本义序列时,你应当利用双引 号。单引号串可以用在其他任何中央,剧本中利用单引号串处置速度会更快些,由于PHP语法剖析器对单引号串的处置体例对照纯真,而双引号的处置因为串外部也需求解析,因而更庞杂些,所以处置速度略慢。
  在字符串中援用庞杂的变量组应时,能够会发生一些成绩,上面的代码会正常任务:
  echo "value = $foo";
echo "value = $a[$i]";
  而上面的代码却不克不及失掉咱们但愿的了局:
  echo "value = $a[$i][$j]"; //咱们但愿打印二维数组$a的某个元素。
  为防止这些字串利用中的潜伏成绩,咱们凡是把庞杂的变量从字串平分分开来,就像如许:
  echo 'value = ' . $a[$i][$j];
  还有一种举措是将庞杂变量用花括号括起来,语法剖析器就可以准确识别了:
  echo "value = { $a[$i][$j]}" //打印二维数组$a的某个元素
  如许,又呈现新成绩了。当咱们想在字串中援用花括号字符自己时,就要记得利用本义符了:
  $var = 3;
echo "value = { $var}"; // 打印了局 "value = 3"
  echo "value = \{ $var}"; // 打印了局 "value = { 3}"

  3、斜杠和SQL语句
  生成HTML代码或SQL查询语句是编写PHP法式时常常碰到并且是件风趣的工作。为何这么说呢,由于这触及到生成别的一品种型的代码,你必需细心地思索和遵守这类代码所请求的编写语法和划定规矩。
  咱们来看如许一个例子,假设你想查询数据库中名字是“O'Keefe”的用户,凡是SQL语句的模式是如许的:
  select * from users where last_name = 'O\'Keefe'
  请注重SQL语句这个英文一切格(撇号)需利用反斜杠本义。PHP专门供应了一些函数来处置如许的情形,函数AddSlashes($str)的用处就是主动在字串中对引号字符拔出反斜杠本义符:
  $last_name = "O'Keefe";
$sql = "select * from users where last_name = '" . addslashes($last_name) . "'";
  在这个例子中,你还要在last_name字串里面括上单引号(SQL语法请求),因为这里利用的是双引号串,所以对这对单引号就不必利用本义了。上面的这个语句是利用单引号串的等价模式:
$sql = 'select * from users where last_name = \'' . addslashes($last_name) . '\'';
  任什么时候候你要在数据库中写入字串,你都必需确保外面的引号准确利用了本义符号,这是良多PHP 初学者常犯的毛病。

  4、双引号和HTML
  与SQL语句分歧,在尺度HTML言语中双引号常被用来暗示字串(如今良多阅读用具备较强的容错功 能,答应在HTML顶用单引号乃至不必引号暗示字符串),例如:
  $html = '<a href="'.$url.'">'.$link.'</a>';
$html = "<a href=\"$url\">$link</a>";
  HTML言语不撑持反斜杠本义,这一点在咱们利用表单的hidden inputs来传输数据的时分就会有所 体味了。设置hidden inputs的值的最好举措,是利用htmlspecialchars()函数来编码。上面的语句可以正常传输一个能够包括双引号的数据:
  <input type=hidden name=var value="<?php echo htmlspecialchars($var) ?>">
终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。
因胸联盟 该用户已被删除
沙发
发表于 2015-2-16 01:13:08 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
简单生活 该用户已被删除
板凳
发表于 2015-2-27 19:43:56 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
活着的死人 该用户已被删除
地板
发表于 2015-3-9 11:25:01 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
变相怪杰 该用户已被删除
5#
发表于 2015-3-12 23:31:31 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
admin 该用户已被删除
6#
发表于 2015-3-24 03:44:32 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
蒙在股里 该用户已被删除
7#
发表于 2015-3-27 06:52:40 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
再见西城 该用户已被删除
8#
发表于 2015-3-28 16:28:13 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
再现理想 该用户已被删除
9#
发表于 2015-4-14 08:17:35 | 只看该作者
当然这种网站的会员费就几十块钱。
山那边是海 该用户已被删除
10#
发表于 2015-4-16 03:59:52 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
分手快乐 该用户已被删除
11#
发表于 2015-4-18 23:15:13 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
莫相离 该用户已被删除
12#
发表于 2015-4-20 10:12:34 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
小妖女 该用户已被删除
13#
发表于 2015-4-21 05:58:29 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
小女巫 该用户已被删除
14#
发表于 2015-4-26 13:23:49 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
老尸 该用户已被删除
15#
发表于 2015-5-6 16:12:05 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
第二个灵魂 该用户已被删除
16#
发表于 2015-6-16 23:33:30 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
飘灵儿 该用户已被删除
17#
 楼主| 发表于 2015-6-22 23:06:24 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
飘飘悠悠 该用户已被删除
18#
发表于 2015-7-5 00:35:36 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
深爱那片海 该用户已被删除
19#
发表于 2015-7-6 21:25:54 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
精灵巫婆 该用户已被删除
20#
发表于 2015-7-10 11:35:28 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 18:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表