已采纳回答 / yauby
因为匹配的结果会存储在变量$match中,即preg_match($p, $str, $match)中的参数$match,而这个参数$match是一个数组。因为你和教程的匹配方式不同,如果没有指明,匹配默认为贪婪模式,教程中的正则表达式明显有匹配name这个字符,匹配出的结果$match[0]为整个字符串"name:steven jobs",$match[1]才为steven jobs,而你的正则表达式则明显没有匹配name,所以当然$match[0]为steven jobs啦
2016-11-06
已采纳回答 / 为何学开发
name在这里是类的属性,即这个类的对象的公共属性,代码为你演示的重点是类的属性和方法之间的调用,即在外部如何通过方法调用属性。实际案例中,经常是将将类的属性设置为保护或私有,如果需要用到该属性,只能在类中通过方法获取和赋值,而不能在外部通过类名->属性名获取或赋值。如代码中的get方法获取,同理赋值也在类内部,防止像$car->name=''的外部随意赋值的情况。至于原因呀,太多说不完,安全/规范/资源等等拉。你比我强的是,我以前学的时候都不会思考这种情形,只会按部就班来什么学什么。
2016-11-06
$str = '主要有以下几个文件:index.php, style.css, common.js';
//将目标字符串$str中的文件名替换后增加em标签
/*$pattern='/(\w+\.\w+)/i';
$replace='<em>$1</em>';// 上面两行表明会依次查找匹配, 然后 依次替换 , 直到结束
$pattern='/(\w+)(\.)(\w+)/i';
$replace='<em>$1\2\3</em>';//\1,\2,\3 依次代表第1,2,3 个小括号 ,$1和${1}含义同\1
echo $newStr;
做下简单注释,便于理解\1,\2和查找替换过程
//将目标字符串$str中的文件名替换后增加em标签
/*$pattern='/(\w+\.\w+)/i';
$replace='<em>$1</em>';// 上面两行表明会依次查找匹配, 然后 依次替换 , 直到结束
$pattern='/(\w+)(\.)(\w+)/i';
$replace='<em>$1\2\3</em>';//\1,\2,\3 依次代表第1,2,3 个小括号 ,$1和${1}含义同\1
echo $newStr;
做下简单注释,便于理解\1,\2和查找替换过程
2016-11-06
已采纳回答 / 喜欢上了爱
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值print() 只能打印出简单类型变量的值(如int,string) print_r() 可以打印出复杂类型变量的值(如数组,对象) echo 输出一个或者多个字符串
2016-11-06
覆盖应该就是完全重写父类的speedUp方法,为什么要把父类里的这个方法先执行一遍,这点不太理解,可能是对这句话的理解不太一样吧,不知道我理解的有没有错?
2016-11-05