为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
鬼斧神工之正则表达式_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

鬼斧神工之正则表达式

壞大叔bbUncle PHP开发工程师
难度初级
时长 3小时12分
  • //模板引擎类--显示模板 public function display($templateName = null;$ext = '.html'){ $templateName = empty($templateName) ? $this->currentTemp : $templateName; //将代码输出,用include_once来包含编译后的模板文件 include_once $this->compileDir.md5($templateName).$ext;
    查看全部
  • //经过正则替换之后,这个outputHtml就是编译之后的html代码,将它生成一个目标文件 $compiledFilename = $this->compileDir.md5($templateName).$ext; file_put_contents($compiledFilename,$this->outputHtml);
    查看全部
  • <?php //定义正则表达式 $pattern = '/\{#'; $pattern .= ' *\$([a-zA-Z_]\w*) *'; $pattern .= '#\}/'; //定义匹配的目标数据 $subject = '测试:{#$test#}'; //将$subject进行正则替换 //$subject = preg_replace($pattern, 'imooc', $subject); //$subject = preg_replace($pattern, 'imooc$1', $subject); $subject = preg_replace($pattern, '<?php echo $$1;?>', $subject); // $$1<=>$\\1 echo $subject; ?>
    查看全部
    0 采集 收起 来源:正则替换测试

    2018-03-22

  • //模板引擎类--模板编译;通过$templateName去生成它的编译文件,默认为空 public function compileTemplate($templateName = null,$ext='.html'){ //先获取到当前处理的模板文件的名称,首先检测一下它是否为空,是则从私有成员中获取,否则就用用户输入的$templateName $templateName = empty($templateName) ? $this->currentTemp : $templateName; //核心代码,编译模板中需要用到的正则替换 //定义一个正则表达式;这个$pattern就是一段可以匹配到模板中需要替换成变量的这么一个标记的正则表达式\{#\$(\w+)#\} $pattern = '/'.preg_quote($this->leftTag);//左侧的\{# $pattern .= ' *\$([a-zA-Z_]\w*) *';//中间的正则,为了给前端灵活的变量名书写方法,允许变量名前后有空格 $pattern .= preg_quote($this->rightTag).'/';//右侧的#}\ //需要对outputHtml,也就是从模板源文件中获取到的这段html代码中去寻找,用这个正则表达式去匹配这个标记,然后将它替换成我们想要的那种PHP代码,也就是PHP能够识别的那种变量的代码。 //使用preg_replace函数作一个正则的替换,$1表示使用这个$pattern匹配到的数据中的子模式,并且是第一个子模式 $this->outputHtml = preg_replace($pattern,'<?php echo $this->getVar(\'$1\') ?>',$this->outputHtml); }
    查看全部
  • 需要这么一个正则表达式去搜索模板源文件中需要替换的那些标记。 \{#\$(\w+)#\} 其中#和$是正则表达式中的运算符,需要在前面加\进行转义;在中间使用一个子模式(\w+)将变量名获取出来。因为PHP的变量名是不允许以数字开头的,所以使用\w+是不严谨的,因为\w+包含了数字。在实际的模板引擎开发中要考虑到PHP变量名的第一位不能为数字。
    查看全部
  • 模板源文件创建及正则匹配 当模板引擎获取到这段html代码之后,通过正则替换去搜索由左标记{#和右标记#}包含的这些变量,然后将它替换成形如<?php echo $test;?>这样的PHP代码。 首先要知道,怎样去写正则表达式去匹配{##}这样的标记?先从regexPal中测试一下
    查看全部
  • //模板引擎类--模板编译(一);通过$templateName去生成它的编译文件,默认为空 public function compileTemplate($templateName = null,$ext='.html'){ //先获取到当前处理的模板文件的名称,首先检测一下它是否为空,是则从私有成员中获取,否则就用用户输入的$templateName $templateName = empty($templateName) ? $this->currentTemp : $templateName; //核心代码,编译模板中需要用到的正则替换 }
    查看全部
  • //模板引擎类--获取模板源文件;第1个参数(模板源文件的名称),第2个参数(默认的模板文件扩展名),也可以设置为私有成员 public function getSourceTemplate($templateName,$ext='.html'){ $this->currentTemp = $templateName; //把模板源文件的完整路径拼接出来 $sourceFilename = $this->templateDir.$this->currentTemp.$ext; //把模板源文件中的html代码赋值给outputHtml私有成员 $this->outputHtml = file_get_contents($sourceFilename); }
    查看全部
  • //模板引擎类--写入和获取数据 //这个目标的作用是在编译模板之前把模板中需要用到的变量,全部放到变量池中,并且给定义一个标记 public function assign($tag,$var){ $this->varPool[$tag] = $var; } //获取数据的方法 public function getVar($tag){ return $this->varPool[$tag]; }
    查看全部
  • //开发一个构造函数,定义几个参数,在实例化的时候, public function __construct($templateDir,$compileDir,$leftTag = null,$rightTag = null){ //把前两个参数赋值给对应的私有成员 $this->templateDir = $templateDir; $this->compileDir = $compileDir; //第三个参数回去检查一下它是否为空,如果为空,就使用默认的私有成员的值 if(!empty($leftTag)) $this->leftTag = $leftTag; if(!empty($rightTag)) $this->rightTag = $rightTag;
    查看全部
  • class template { //定义一个私有成员用来存储模板引擎源文件的所在目录 private $templateDir; //这个私有成员用来存储编译之后文件的存放目录 private $compileDir; //在模板文件中需要替换掉的那些变量,它们需要一个标记,让模板引擎去识别需要替换的是哪一部分 //在Smarty模板引擎中默认是一个{ 这里不跟Smarty一样 private $leftTag = '{#'; private $rightTag = '#}'; //这个私有成员用来存储当前正在编译的模板文件名 private $currentTemp = ''; //这个私有成员用来存放当前正在编译的模板文件中的html代码。 //也就是从源文件中读取一段html代码存放在$outputHtml中,然后通过一系列的正则替换,最后再将这段html代码写入到一个目标文件中,这个文件就是编译之后的模板文件。 private $outputHtml; //这个是一个变量池,在编译模板源文件之前,会把模板中需要用到的变量,把它们的值通通存到这个变量池中。 //当模板文件被编译之后,就可以从这个变量池中根据标记获取到它们需要的值。 private $varPool = array(); }
    查看全部
  • //实战篇--仿Smarty简易模板引擎 //模式单元进阶篇:模式单元不仅仅是为了让它可以当作一个原子来看待,它可以灵活地获取到匹配数据中的某一段数据,可以实现更复杂的需求 $pattern = '/^(\w+)\.(\w+)\.com$/'; $subject = 'www.imooc.com'; $matches = array(); preg_match_all($pattern,$subject,$matches); show($matches); //这是一个数据输出调试用的函数 function show($var = null,$isdump = false){ $func = $isdump ? 'var_dump' : 'print_r'; if(empty($var)){ echo 'null'; }elseif(is_array($var)||is_object($var)){ //array,object echo '<pre>'; print_r($var); echo '</pre>'; }else{ //string,int,float... echo $var; } }
    查看全部
  • badgun模式单元(进阶) 总模式 每一个pattern可以看作一个总模式 子模式 pattern中的每一个单元(...)子模式 $pattern = '/^(\w+)\.(\w+)\.com$/';
    查看全部
  • 仿smarty简易模板引擎,在一个标准的PHP系统中,模板引擎肯定是要有的,便于前端工程师和后端工程师把工作分开来,而且前端工程师不需要懂后端的代码。
    查看全部
    0 采集 收起 来源:模板引擎简介

    2015-09-23

  • //对表单提交过来的数据做一个验证 if(!$regex->noEmpty($_POST['username'])) exit('用户名是必须填写的!'); if(!$regex->isEmail($_POST['email'])) exit('email格式错误!'); if(!$regex->isMobile($_POST['mobile'])) exit('手机号格式错误!');
    查看全部

举报

0/150
提交
取消
课程须知
学习本课程之前需要掌握基本的PHP语法,基本的OOP思想,基本的MVC模式知识。
老师告诉你能学到什么?
在本课程中可以充分理解正则表达式的定义并掌握如何在实际开发中应用正则表达式。其中包含表单验证实际应用以及简易版模板引擎的实现。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!