单引号和双引号大体相同,但有一点非常重要,,就是变量引用问题 ,你把下面代码运行即可明白了
代码如下 | 复制代码 |
<?php $x="中国"; echo "我是$x人";//双引号 echo "<br />"; echo '我是$x人';//单引号 ?> |
变量用双引号括起来,单引号中的则不是(即单引号中的变量符号不解析)
单引号内部的变量不会执行
双引号会执行
如
代码如下 | 复制代码 |
$name = 'hello'; echo "the $name"; |
会输出 the hello
而如果是单引号
代码如下 | 复制代码 |
$name = 'hello'; echo 'the $name'; |
会输出 the $name
主要区别就是这个。
在字符串中引用复杂的变量组合时,可能会产生一些问题,下面的代码会正常工作:
代码如下 | 复制代码 |
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}" |
看个实例
代码如下 | 复制代码 |
$var1 = "chris mao"; //assign the value "chirs mao" to $var1 |
代码如下 | 复制代码 |
$mode = "/^[a-z][-_.]?[a-zd]*@[a-z0-9]+[.][a-z]{2,4}/i"; $str = "a12345@j111cn.net"; echo $str.'<hr>'; if(preg_match($mode, $str, $arr)){ echo 'succeed -- <font color=red>'.$arr[0]; }else{ echo 'failed'; } |
d 包含所有数字[0-9]
d 除所有数字外[^0-9]
w 包含所有英文字符[a-za-z_0-9]
w 除所有英文字符外[^a-za-z_0-9]
s 包含空白区域如回车、换行、分页等 [fnr]
preg_match_all ( string pattern, string subject, array matches [, int flags] )
截取比较详细的内容,采集网页,分析文本
代码如下 | 复制代码 |
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] ) preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] ) |
提示 1、替换内容可以是一个正则也可以是数组正则
2、替换内容可以通过修正符e来解决替换执行内容
代码如下 | 复制代码 |
preg_split ( string pattern, string subject [, int limit [, int flags]] ) |
本文章收集了三种关于从字符串或文章内容中匹配url正则表达式的php代码,前二种函数是获取以域名为标题的http,后一种是匹配内容中的url地址并且保存到数组中哦。
//方法一
$ereg_str[url] = "^[hh]{1}[tt]{2}[pp]{1}://[ww]{3}.[0-9a-za-z][0-9a-za-z-]{0,25}((.[a-za-z]{3,4})|(.[a-za-z]{2})){1,2}$ "; //判断一个合法的url
$pattern = $ereg_str['url'];
if(ereg($pattern,$string)) echo " <br> right! ";
else echo " <br> error! ";
}
//
$str[] = "http://www.111cn.net";
$pattern = '/^(http://)?www.[0-9a-z][0-9a-z-]{0,25}((.(aero|biz|cc|co|com|coop|edu|gov|info|int|mil|museum|name|nato|net|org|tv))?(.(af|aq|at|au|be|bg|br|ca|ch|cl|cn|de|eg|es|fi|fr|gr|hk|hu|ie|il|in|iq|ir|is|it|jp|kr|mx|nl|no|nz|pe|ph|pr|pt|ru|se|sg|th|tr|tw|uk|us|za))?){1}$/i ';
foreach($str as $key=> $val)
{
$key++;
if(preg_match($pattern,$val))
echo " <br> <font color=green> right! </font> ".$val;
else
echo " <br> <font color=red> error! </font> ".$val;
}
//方法三
//匹配<a href="xxxxxx">yyyyyy</a>
"/<a.+hrefs*=s*['"]?([^s<'"]*)['"]?.*>([^</a>].*)</a>/i"
//匹配href="xxxxxx"
s*<[aa]{1}s*href="([^"]*)"s*>([^<]*)</1>
$reg = "<a[ss]*?(href)s*=s*(?(?=["'])((["'])(?<href>[^"']*)2)|(?<src>[^s>]+))[ss]*?>";
?>
这篇文章对于初学者来说比较有用了,是来告诉你php 定义二维数组与数组定义方法哦,定义一维数组很简单,方法也比较多,定义二级或多维数组也差不多,如下。$array[] =1; //定义数组
$array = array(1); //定义数组
/*
php如何定义二维数组(多维数组)呢?
将一个一维数组的元素也定义为数组,就是一个二维数组,
$aa=array(0=>"dd",1=>"ff");
$bb=array(0=>"b1",1=>"b2");
$cc=array(0=>$aa;1=>$bb); 此时,$cc[0]也是一个数组,$cc[1]也是一个数组,$cc就是一个二维数组.
*/
//如何动态定义多维数组呢。
$obj = array(16=>16);
for($i=0;$i<16;$i++) {
for($j=0;$j<16;$j++) {
$obj[$i]=$j;
}
}
$str = "corn, broccoli, zucchini";
$ar = explode(", ", $text);
print_r($ar);
/*
定义和用法
explode() 函数把字符串分割为数组。
语法
explode(separator,string,limit)参数 描述
separator 必需。规定在哪里分割字符串。
string 必需。要分割的字符串。
limit 可选。规定所返回的数组元素的最大数目。
*/
$biuuu = 'www.111cn.net';
print_r(str_split($biuuu))
/*
定义和用法
str_split() 函数把字符串分割到数组中。
语法
str_split(string,length)参数 描述
string 必需。规定要分割的字符串。
length 可选。规定每个数组元素的长度。默认是 1。
*/
//
$str="$str=$str;";
eval($str);
$string = '杯子';
$name = '咖啡';
$str = '这个 $string 中装有 $name.<br>';
echo $str;
eval( "$str = "$str";" );
echo $str;
//eval eval()函数的作用是:返回与php代码相对应的字符串。
$str="1:0:1:0:1";
$arraylist=split(":",$str); //存入数组
for($i=0;$i<count($arraylist);$i++) //把它们全部输出来
{
echo $arraylist[$i]." ";
}