|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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) ?>">
终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。 |
|