在纯php文件中不加php结束符是一个好习惯,php结束符仅用于在php与html混写时标示php代码结束。

<? ?>是短标签,<?php ?>是长标签,在php的配置文件(php.ini)中有一个short_open_tag的值,开启以后可以使用PHP的短标签。

一、简介featherview

Feather_view是内置的php模板引擎,结合fis提供的fis-server,可以实现动态模版渲染本地调试功能。这个插件是后端提供的,前端和后端的联系仅仅通过Feather_view。

二、featherview常用语法

1、模块引用

2、扩展子模块

3、PHP符号

A、单行注释用 // 或 #,多行注释用/* */

B、拼接字符串用"."

C、@是错误抑制符,就算变量不存在,也能让页面正常输出。

<?=@$value ?>

这样做有好处,也有坏处,页面不出错,发现不了问题。

4、定义变量

<?php $value="Bonjour"; ?>
<?php $name="camille"; ?>

5、打印变量

<?= $value ?> // Bonjour

echo是一个语言结构,有无括号均可使用,echo或echo()。echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值。print()只能打印出简单类型变量的值,如int,string。print_r()可以打印出复杂类型变量的值,如数组,对象。

<?php echo $value; ?> //Bonjour
<?php echo var_dump($value); ?> //string(7) "Bonjour"
<?php echo sprintf("%s, je suis %s ",$value,$name); ?> //Bonjour,je suis camille
<?php print $value; ?> //Bonjour
<?php print_r($value); ?> //Bonjour
<?php printf("%s, je suis %s ",$value,$name);?> //Bonjour,je suis camille

6、定义数组

<?php $myArr=array("job","blog","essay","fransai","dream"); ?>
<?php $myArr=array("job" => "r1","blog" => "r2","essay"=> "r3","fransai"=>"r4","dream"=>"r5"); ?>

7、打印数组

A、<?php print_r($myArr); ?>
Array
(
[0] => job
[1] => blog
[2] => essay
[3] => fransai
[4] => dream
)
B、<?php var_dump($myArr); ?>
array(5) {
[0]=>
string(3) "job"
[1]=>
string(4) "blog"
[2]=>
string(5) "essay"
[3]=>
string(7) "fransai"
[4]=>
string(5) "dream"
}
C、<?php var_export($myArr); ?>
返回一个变量的字符串表示。

8、条件语句

<?php if ($value !== 0): echo $value; endif; ?>
<?php if(): ?>
<?php endif; ?>
<?php if($value != ''): ?>
<?php else: ?>
<?php endif; ?>
<?php if ($value !== 0) {  echo 'active';  } ?>
<?php if() { ?>
<?php } else { ?>
<?php } ?>
<?php echo !empty($value) ? $value : ''; ?>

9、循环语句

<?php for($j=0; $j < count($myArr); $j++) { ?>
<?php } ?>
<?php foreach($myArr as $key => $value): ?>
<?php endforeach; ?>
<?php foreach($myArr as $key => $value) {
} ?>
<?php foreach($myArr as $key => $value) { ?>
<?php } ?>

三、featherview常用的PHP函数

1、字符串操作

A、返回字符串长度

strlen(str)
mb_strlen(str,'utf8')

B、移除字符串两边特定字符,常用来除去两边空格

trim(str, charlist)

C、通过千位分组来格式化数字

number_format($value) 

D、将变量转成整数类型

intval($value)

E、返回字符串的一部分

mb_substr(str, startindex, length, 'utf-8')
<?php echo mb_strlen($value,'utf8') > 8 ? mb_substr($value, 0, 8, 'utf-8')."..." : $value; ?>

F、替换字符串中特定的字符

strtr(str, findstr, replacestr)
strtr(str, array)
<?php
echo strtr("baab", "ab", "01"),"\n"; //
$trans = array("ab" => "01");
echo strtr("baab", $trans); //ba01
?>

G、返回替换后的字符串

str_replace(findstr, replacestr, str)
<?php echo str_replace("o","a",$value); ?> // Banjaur

H、查找字符串在另一字符串中的首次出现,区分大小写,返回字符串

strstr(str, findstr, false)
<?php echo strstr($value,"o"); ?> // onjour
<?php echo strstr($value,"o",true); ?> // B
strpos(str, findstr, start);//返回数字
查找字符串在另一字符串中第一次出现的位置(区分大小写) stripos(str, findstr, start);//返回数字
查找字符串在另一字符串中第一次出现的位置(不区分大小写) strrpos(str, findstr, start);//返回数字
查找字符串在另一字符串中最后一次出现的位置(区分大小写) strripos(str, findstr, start);//返回数字
查找字符串在另一字符串中最后一次出现的位置(不区分大小写)

I、使用反斜线引用字符串

addslashes(str)
<?php
$testStr='转义后,"输出&quot;,阻止转义后,输出正常的双引号",有可能破坏变量的引号的正常匹配';
echo addslashes($testStr);
?>
//转义后,\"输出&quot;,阻止转义后,输出正常的双引号\",有可能破坏变量的引号的正常匹配

J、将字符转换为HTML转义字符,防止XSS攻击

htmlentities(str)
<?php
$testStr='<a href="test.html">测试页面</a>';
echo htmlentities($testStr);
?>
//<a href="test.html">²âÊÔÒ³Ãæ</a>有中文的时候,最好用htmlspecialchars,否则可能乱码。 
//&lt;a href=&quot;test.html&quot;&gt;测试页面&lt;/a&gt;

K、将特殊字符转换为HTML实体,防止XSS攻击

htmlspecialchars(str)
<?php
$testStr='<a href="test.html">测试页面</a>';
echo htmlspecialchars($testStr);
?>
//<a href="test.html">测试页面</a>
//&lt;a href=&quot;test.html&quot;&gt;测试页面&lt;/a&gt;

L、把字符串分割到数组中

str_split(str, length)
<?php print_r(str_split($value,2)); ?>
Array
(
[0] => Bo
[1] => nj
[2] => ou
[3] => r
)

M、把字符串打散为数组

explode(" ",$value)
<?php print_r(explode(" ",$value)); ?>
Array
(
[0] => Bonjour
)

2、数组操作

A、检测变量是否为空

empty($value) 或者 empty($myArr)

B、检测变量是否设置

isset($value) 或者 isset($myArr)

C、销毁变量

unset($myArr)

D、检测变量是否是数组

is_array($myArr)

E、检测数组中是否存在指定的值,区分大小写。

in_array(finditem, array)

F、返回数组长度

count($myArr), sizeof()是count()的别名

G、求最小最大值

min(x,y)或者min($myArr)
max(x,y)或者min($myArr)

H、返回一个包含给定数组中所有键值的数组,但不保留键名。

array_values($myArr) 

I、从数组第二个元素开始取出,并仅返回两个元素。

array_slice($myArr,1,2)

J、从数组第三个元素开始取出,并返回数组中的其余元素。

array_slice($myArr,2)

K、数组组合成字符串

implode(" ",$myArr)

L、把数组(或对象)转为json格式数据

json_encode($myArr)

M、对JSON格式的字符串进行解码,并转换为 PHP 变量。

json_decode($json)

N、格式化本地日期和时间,并返回已格式化的日期字符串。

date(format,timestamp)

四、featherview常用的超级全局变量

1、从地址栏获取参数

$_GET["agentno"]  //比如1

2、判断是否是https协议

function getProtocol(){
return !isset($_SERVER['HTTPS']) ? 'http://' :'https://';
}

3、获取当前页面地址的主机名,类型为string。

$_SERVER['HTTP_HOST']  //比如xxx.com.cn

4、获取当前设备的userAgent,类型为string。

function isWeixin(){
return strpos($_SERVER['HTTP_USER_AGENT'],'MicroMessenger') > -1 ? true : false ;
}

五、php自定义函数

//不传参数时,默认是空字符串,是设置函数默认参数的一种方式
public static function getParam($str=""){
}

php模板引擎之featherview的更多相关文章

  1. featherview模板引擎

    1.判断语法 <?php if(isset($value['fromVR']) && !empty($value['fromVR'])) {?> <s class=& ...

  2. JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  3. Handlebars 模板引擎之前后端用法

    前言 不知不觉间,居然已经这么久没有写博客了,坚持还真是世界上最难的事情啊. 不过我最近也没闲着,辞工换工.恋爱失恋.深圳北京都经历了一番,这有起有落的生活实在是太刺激了,就如拿着两把菜刀剁洋葱一样, ...

  4. 推荐13款javascript模板引擎

    javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...

  5. JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  6. DotLiquid模板引擎简介

    DotLiquid是一个在.Net Framework上运行的模板引擎,采用Ruby的Liquid语法,这个语法广泛的用在Ruby on rails和Django等网页框架中. DotLiquid相比 ...

  7. doT js 模板引擎【初探】要优雅不要污

    js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...

  8. 浅谈 Web 中前后端模板引擎的使用

    前言 这篇文章本来不打算写的,实话说楼主对前端模板的认识还处在非常初级的阶段,但是为了整个 源码解读系列 的完整性,在深入 Underscore _.template 方法源码后,觉得还是有必要记下此 ...

  9. JavaScript模板引擎artTemplate.js——结语

    再次首先感谢模板的作者大神,再次放出github的地址:artTemplate性能卓越的js模板引擎 然后感谢博客园的一位前辈,他写的handlebars.js模板引擎教程,对我提供了很大的帮助,也是 ...

随机推荐

  1. tp3 链接生成二维码

    https://packagist.org/packages/endroid/qr-code

  2. Hadoop基础-MapReduce的排序

    Hadoop基础-MapReduce的排序 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MapReduce的排序分类 1>.部分排序 部分排序是对单个分区进行排序,举个 ...

  3. 高斯—若尔当(约当)消元法解异或方程组+bitset优化模板

    高斯消元法是将矩阵化为上三角矩阵 高斯—若尔当消元法是 选定主元后,将主元化为1,枚举除主元之外的所有行进行消元 即将矩阵化为对角矩阵,这样不用回代 bitset<N>a[N]; int ...

  4. 第一、介绍Canvas

    canvas能做什么? canvas是HTML5中的新元素,你可以使用javascript用它来绘制图形.图标.以及其它任何视觉性图像.它也可用于创建图片特效和动画.如果你掌握了完整的命令,你可以用c ...

  5. Tornado实现多线程、多进程HTTP服务

    背景 线上有一个相关百科的服务,返回一个query中提及的百科词条.该服务是用python实现的,以前通过thrift接口访问,现要将其改为通过HTTP访问.之前没有搭建HTTPServer的经验,因 ...

  6. 分布式监控工具Ganglia 介绍 与 集群部署.

    如果你目的很明确就是冲着标题来的,不爱看我唠叨,请直接进入第二个分割线之后的内容. 其实之前就是有做Swift监控平台的打算的,但是因为没什么硬性需求么,也不要紧的,就一直搁置了.最近实验室来了个大二 ...

  7. [转]使用 mitmproxy + python 做拦截代理

    使用 mitmproxy + python 做拦截代理   本文是一个较为完整的 mitmproxy 教程,侧重于介绍如何开发拦截脚本,帮助读者能够快速得到一个自定义的代理工具. 本文假设读者有基本的 ...

  8. java垃圾回收的回收器

    回收器的种类: --串行(–XX:+UseSerialGC ) Out ofBox算法,年轻代串行复制,年老代串行标记整理,主要用于桌面应用 --并行(–XX:+UseParallelGC ) 年轻代 ...

  9. 转 Spring Boot之No session repository could be auto-configured, check your configuration问题解决

    1.  环境介绍 JDK 1.8  Spring-Boot 1.5.1.RELEASE, STS IDE 2.  问题的提出 创建了一个非常简约的Spring Boot Web Application ...

  10. Linux 管道

    管道命令 " | ",竖线符号代表的就是管道符 管道是一种两个进程间进行单向通信的机制.因为管道传递数据的单向性,所以又称为半双工管道. 介绍: 管道可以根据一组命令按照数据流向的 ...