直通世界顶级动画名校不是梦?!高布兰学院硕士预科项目人才培养计划来了!

如果你对动画爱得深沉,也时常关注wuhu

相信对这所世界顶级动画名校一定印象深刻!

图片

法 国 高 布 兰 影 像 学 院

GOBELINS,l’école de l’image(以下简称“高布兰学院”),曾多次被Career Review、The Rockies等国际专业平台誉为“世界动画教育排名第一的法国动画院校”。学生作品曾多次入围奥斯卡奖,往届毕业生在迪士尼、照明娱乐、梦工厂等大型动画工作室担任导演和动画总监。

高布兰学生作品图片图片图片图片图片图片

学院设有Character Animation and Animated Filmmaking(动画导演)、Gestion de la production audiovisuelle (影视制片)和3D Character Animator(角色动画)等专业,每年录取来自全球23个不同国家和地区的150名学生。

每年,高布兰学院本科阶段的联合创作因成为法国昂西国际动画电影节的开幕影片而享誉全球。由于高布兰学院本科阶段仅录取高中应届毕业生,从而大大增加了硕士阶段的竞争机率,直接影响了很多在读学生和在职人员到高布兰学院的进修机会。

图片
图片

2020法国昂西国际动画节开幕动画

图片

高布兰学生作品Best Friend(《最好的朋友》)

获第46届美国动画安妮奖-最佳学生作品奖

而且,就在这几年间,越来越多的中国动画人进击了这所世界名校,让世界看到了中国动画人的力量!每一年,wuhu也都会介绍他们的毕设专题!

拓展阅读

wuhu专访高布兰中国动画人专题(部分)

这所全世界瞩目的动画学院在历史上只有两位中国学生,而他就是其中之一!

世界顶级动画学院毕业到安妮奖提名,中国动画人沈毅专题

《一指城》、《树》幕后主创直播分享会来啦!

世界顶级动画名校GOBELINS国人毕设《In Orbit》专题!

这所法国世界顶级名校又出了一部国人毕设!

2019年高布兰动画毕设专题:2019届毕设合集

图片

2018年高布兰动画毕设专题:2018届毕设全集

图片

从2019年开始

经高布兰影像学院国际部批准

与PANDANIM动画制片与培训中心合作开设了

面向中国考生的硕士预科项目

Animation Talent Booster

wuhu动画人空间也联合学院

一直持续为该计划发声发力

图片

法国高布兰影像学院硕士预科项目国际动画人才培养计划联合wuhu动画人空间

ATB预科班的课程引用学院本科的教学模块,学制为1年,考生可在线上完成全部学科后,赴法国高布兰本校进行结业答辩。

成绩优异者将获得学院颁发的预科证书,并优先被本校动画导演专业录取继续深造,考生也可兼报法国本土及其他国家动画院校的相关专业。

图片

校园实景

某模块ATB学员答辩现场

某模块课程内容展示

图片

以下视频来源于CULTUREVE法中文化

此外,2020年12月

法国高布兰影像学院官网公布了

总值5500欧元的面向中国学生的

熊猫动画奖学金计划

自2021年起

凡是被学院CAAF硕士专业

或Visual Storytelling创作营项目录取的

中国学生均可申请!

图片

有关熊猫动画奖学金计划更多信息:官宣:2021年度法国高布兰影像学院(GOBELINS, l’école d’image)面向中国发放熊猫动画奖学金计划

看到这里,怀揣动画梦想的你

如果想考进世界动画名校

想要了解和学习动画制作

那么,这次机会不容错过!

现在通过WUHU申请

还可以免费参加考委会组织的考前辅导哦~

图片

一、教学优势

1. 预科以高布兰学院本科必修模块为蓝本,相同的教学强度和本校师资力量,由学院硕士录取面试官专项培养。

2. 预科学生持有高布兰学院本校学生证,享有正式学籍和学生档案 。结业答辩在学校本部,融入校园学习氛围。

3. 课程突破了线上教学只能对话的屏障,使用更适合动画专业学习的线上教学程序,可以完成在动态文件上的实时批注,并自动将批注内容匹配到视频的原画面中,通过试错预览纠正修改完成真正意义的“手把手”教学。

4. 着重对考生英法双语能力的培养,采用“宽进严出”的方法。中文辅导员全程参与核心教学模块的课堂翻译,协调教师与学生间的沟通。

5. 中法两国的“时差优势”,考生可最大程度兼顾原有的学习或工作安排。

二、招生对象

1. 计划留学深造高布兰学院硕士的学生或专业人士;

2. 希望进修高布兰学院本科课程,高中往届毕业生或已错过报考年龄的学生或专业人士。

三、招生计划图片

四、报名条件

1. 报名年龄不得低于18岁,不得高于40岁。

2. 动画或美术相关专业大学三年级在读或以上。无大学教育背景者须具备至少2年动画相关行业工作经验。

3. 具有扎实的美术功底或动画基础。

4. 具备一定的英语交流能力(无需提供语言成绩 )。

五、招生与录取流程

(一) 申请流程

1. 考前辅导

考生通过WUHU申请免费参加考委会组织的考前辅导(2021年5月3日-19日)。

2.递交材料

考生按照材料清单要求在2021年5月20日前完成材料递交,WUHU审核考生身份和报考资质后推荐材料至考委会。

3.面试

材料审核通过,WUHU邮件通知考生面试日期和缴费信息。考生按照指定要求参加线上面试,面试日期:2021年5月24日-28日

4.录取

公布结果日期为2021年5月31日面试通过考生将收到WUHU录取通知函邮件。考生完成录取手续,获得高布兰影像学院开学通知和学生证。

注意事项:

学生证用于结业返校答辩,须妥善保管。开学后,考生若中途退学,不予退还学费。

(二) 申请材料

应届毕业生 :

护照(或身份证)扫描件、2 寸证件照片、简历(英文) 、动机信(英文)、申请表格(wuhu索取)、选修专业课程成绩单、所会软件的清单、英语四级证书或其他语言能力证明(可选)、国内导师推荐信(可选)

短片创作基本信息:导演阐述、故事大纲、剧本、美术概念设计(角色、道具、场景设计)、制片周期计划等,文件页数不超过 20 页。

不低于20秒的毕业短片样片, 格式为 1280×720/,压缩格式 H264,命名方式为: Teaser_姓_名.mp4, 标注参与制作内容。

非应届毕业生:

护照(或身份证)扫描件、2 寸证件照片、简历(英文) 、动机信(英文)、申请表格(wuhu索取)、选修专业课程成绩单、所会软件的清单、英语四级证书或其他语言能力证明(可选)、国内导师推荐信(可选)、所获荣誉证明(可选) 、最后学历或工作证明公证(中文或英文)书扫描件

Portfolio,文件页数不超过15页,保存为PDF格式,命名方式为 Portfolio_姓_名.pdf, (例如,Portfolio_LI_Ming.pdf). 

 (可选)递交Demoreel,视频时长不超过 1 分钟, 格式为 1280×720/,压缩格式 H264,命名方式为: Demo_姓_名.mp4, (例如,Demo_LI_Ming.mp4)。

注意事项:

1. 每一个材料单独保存为一个 PDF 文件,如果一项材料包含多页文件,请将其整合为一个 PDF 文件。

2. 集体创作的作品,请标注出考生参与制作部分和工作角色。使用 2D 或 3D 技术的作品请标注使用软件名称。

六、入学与课程设置

(一) 开学及假期信息  

开学日期安排:2021年6月14日-2022年3月4日

放假日期安排:2021年8月2日至31日 (暑假),2021年12月24日至31日(圣诞节),2022年1月31日至2月4日 (春节)

赴法答辩日期:2022年7月7日-8日   (高布兰学院法国本部),2022年5月集体办理签证

(二) 课程设置  

图片

注意事项:

Module 8  Workshop portfolio/demoreel 考前模块非以高布兰学院旁系名义的教师任教,而是由本校校考面试的导师直接任教。

(三) 授课方式

课程均为教师实时现身授课,专业课程教师使用英语或法语授课,助教随堂翻译,文化或语言课程无助教翻译。每周教学流程如下:图片

(四) 分班

预科班根据考生的入学水平分为动画基础班和动画进阶班,主学习时间在每日下午(北京时间14点半至18点半),考生另外根据自身情况选择自习或作业的时间。

注意事项:授课时间可能会由于冬/夏令时的变化以及课程的具体情况而调整。

七、结业答辩与证书

(一) 抵达法国

预科学生部将无偿协助所有学生办理短期签证,为方便接待学生,学生部可提供含机场接机和2星快捷酒店1晚住宿费的有偿服务,费用为120欧元。

(二) 结业答辩

学生凭本校学生证按时入校,答辩历时两天,第一天本校国际部教师组织学生参观学校,观看本校近年毕业作品放映会,介绍答辩注意事项。第二天学生入校答辩,本院国际部和动画部相关教师出席答辩考核。

(三) 证书

学分考核根据学生旷课次数、个人进步空间、艺术方向和作业完成度4个方面综合评估。修满学分并通过答辩的学生现场获得高布兰学院颁发的预科证书。如遇特殊原因未通过答辩或未参加答辩的,学分修满者可通过邮寄方式获得由高布兰学院颁发的学习证明。

(四) 证书用途

高布兰学院预科证书可用于求职和应聘国际动画公司,拓展海外职业发展。

 名额有限 

 快抓紧机会挺入世界顶级动画名校学习吧~

  报名方式  

微信后台回复

“ ATB ”

即可获得报名表

填写报名表+报名材料

投递官方邮箱pllokk123@qq.com报名

审核通过后会回复邮件

 常见问题  Q & A  

图片

更多问题咨询请添加

wuhu小精灵5号

(微信号:wuhudonghua5)

Q:预科项目是高布兰学院官方项目么?结业可以获得高布兰学院的证书么?

A:ATB预科项目是高布兰学院在中国地区的唯一官方合作项目,由学院本校老师授课,部分课程在法国主校区完成,成绩合格获得高布兰学院正式学分和结业证书,答辩优秀的学生直接录取进入硕士阶段。

Q:今年预科项目还是线上授课吗?

A:是的。今年预科分上午和下午班,对应中国时间的下午班和晚班,方便同学们安排时间。老师在线授课交流时间为北京时间下午2:30-5:00或晚上7:30-10:00。白天上课或工作的学生可以选择晚间授课时段,充分利用中法时差优势。

Q:为什么今年高布兰学院的ATB预科项目改为了线上教学模式?

A:由于疫情期间出入境不便,学院决定将ATB预科项目升级为线上线下结合的教学新模式。新模式的采用既确保了教学工作的全面正常开展,同时学习成本也降低为传统模式下学习成本的一半。

Q:高布兰学院ATB预科线上教学模式与其它网课有什么区别和优势?

A:ATB首创学院文化线上化,除专业课程外还开展影评俱乐部、法语角、文化课等丰富校园文化活动。预科为小班授课,固定时段,老师同学在线一起学习,及时解答学生疑问,课件可课后重复观看。相对传统留法学习生活,线上预科无语言门槛,助教翻译让更多学生得到学习机会。

Q:我想报名但还没有作品集或demoreel,提交的材料不全怎么办?

A:申请ATB预科项目需要审核作品集或demoreel,两者都还没有或不知道如何整理准备的话,可以参加为ATB预科项目专设的考前辅导,会有专门负责作品集辅导的老师给予指导。

Q:考前辅导需要收费吗?

A:ATB预科项目专设的考前辅导不收取任何费用,由专业老师免费指导。

Q:我想报名明年的法国动画院校联盟RECA联考,可以报名预科吗?

A:可以报名预科,今年ATB预科项目的授课时间和明年初的联考时间完全对接,可将预科制作的练习整理到作品集中,增加申请的“含金量”。

Q:我没有出国计划,也可以报名预科么?

A:可以报名预科。ATB预科项目按照高布兰影像学院本科教学大纲,在一年内全面提学员的动画能力、审美能力、语言能力与作品集质量,适合想要全面提高综合能力的考生,即使没有出国深造打算、已经工作的同学也可报名,将预科项目所学应用到实际工作中。

Q:Module 9-法国高布兰学院现场答辩需要做什么准备?

A:届时由辅导员协助同学集体办理签证。获得签证后学生可以自行安排和管理在法国学习期间的相关事宜,也可以选择学校提供包含在法学习期间住宿/机场接机和送机/当地交通卡的增值服务。凭签证可以在法国或其他申根国家逗留1个月。

Q:预科结业后是否也可以申报其他学校?

A:是的。

Q:在法国的学习生活贵吗?成本如何?

A:法国留学相较美加两国成本十分低廉,其中住宿成本(单人公寓房补后)约28800RMB/年,相较美加留学成本:加拿大住宿成本约62000RMB/年,学费约85000RMB/年;美国住宿成本约84000RMB/年,学费约370000RMB/年。

Q:在法国学习之后将来可以去美国深造吗?

A:当然可以。45.61%的法国毕业生被海外公司聘用,其中主要集中在加拿大和美国。美国梦工厂动画工作室将近30%的动画艺术家毕业于法国院校。

 现在加入2021直通世界顶级动画名校 

 还可以与更多小伙伴们交流心得 

图片

—END—

想了解更多动画资讯与信息?添加wuhu小精灵5号微信(wuhudonghua5)发送“动画新势力”即可在不久后被邀请进群。

你一定还感兴趣:

图片

画圈炸了!13岁女孩花70万约稿!家长发现后和画师开撕?!真相到底是什么?

图片

又一太太作品刷屏了!潮服女子版水浒、西游没想到如此带感?!神仙画手RC金枪鱼盛宴专访

图片

日本动漫行业薪资出现严重日中逆转?!21部动画查出1465个问题!江苏消保委呼吁动画分级!

图片

光影与色彩的绝佳捕捉!韩国动画人Kaye Kang远赴重洋只为追寻动画梦想!

图片

听说你想让画面抓人眼球?利用“视觉引导”让画面效果翻倍的秘诀来了!

图片

辣眼睛!椰树的土味广告被立案调查了!

图片

疯狂刷屏!这动画细节量惊人!!马来西亚动画人超流畅动画幕后制作解析!!

图片

「刺杀小说家」宇宙开启!揭秘国产视效天花板的制作幕后 | 专访微缩模型工作室追云者

图片

对话《一念永恒》制作团队视美影业,“反套路”修仙国漫为什么如此“上头”?

图片

少年悟空,妖王出世!历时五年暗黑国漫电影《西游记之再世妖王》呈现全新西游!

图片

想了解更多后续的介绍要锁定wuhu哦,微博的小伙伴可以关注我们的新浪微博:wuhu动画人空间,对了!如果你想看更多动画作品,去b站搜索wuhu动画人空间看看?

新加入的小伙伴们请注意!往期精彩内容在平台里的wuhu主页上,可别错过哦!欢迎小伙伴们的投稿!

如果你喜欢,请分享给更多人看到:)

欢迎留言和wuhu三侠互动!

图片

收录于话题 #wuhu专题系列311个上一篇又一太太作品刷屏了!潮服女子版水浒、西游没想到如此带感?!神仙画手RC金枪鱼盛宴专访

原文:https://mp.weixin.qq.com/s/M8L3Xo2Yjy7IFVrqOEgd6Q

一分钟读懂广告投放各计费CPM、CPC等(公式推导干货)

楼主在广州某游戏公司做手游广告投放,此篇是入职第三天做的一些总结,内容简单,适合新手阅读,欢迎大佬指正探讨!

一、互联网广告一般流程

以我们最常接触的信息流广告为例,当用户打开APP时,有时会浏览到一条广告(广告展现,也称曝光, 缩写为m),用户可能会点击这条广告(广告点击, 缩写为c),在详情页(也称“落地页”)中,用户可能会点击下载(广告下载,缩写为i),安装游戏后进行注册(一般为填写手机号, 缩写为a),玩了一段时间后,可能会充值(付费,缩写为p),以及后续可能还有更深度的用户行为

二、互联网广告基本术语

1、四大基本角色:

广告主(advertiser),媒体(publisher),广告商(agency),受众(audience)

广告主(advertisers):指想为自己的品牌或者产品做广告的人,例如宝马、Intel、蒙牛,贪玩游戏

媒体(publisers):提供广告位置的载体。例如今日头条、QQ浏览器、抖音等等。

广告商(agency):本质上其实就是中介,帮广告主找媒体广告位,帮媒体找广告主

受众(audience):“消费”广告的人,即消费者、用户。

2、计费方式:

CPM(Cost Per Mille), 即千次广告展现的费用。因为每次展现的费用数字很小,业内约定按照广告展现了1000次的形式来收费。按此付费的广告大多以品牌展示、产品发布为主,比如:微信朋友圈广告,曝光效果通常比较好

CPC(Cost Per Click), 即按照广告被点击的次数来计费。关键词竞价、信息流广告大多是这种模式。

cpa(cost per action),即按照用户行为来计费,一般为注册行为,注册成本。也包括CPD(CostPer Download)每次下载成本CPI(Cost Per Install)每次安装成本

cps(cost per sell),即按照销售来付费,直接的效果营销广告。比如在手游中,用户充值一定金额为一次有效销售。不接入渠道SDK,只给渠道一个游戏包,分成由cp分给渠道

CPP(Cost Per Purchase),每购买成本,指按交易笔数来结算。只有在用户点击广告并进行交易后,按交易笔数付给广告站点费用。与cps不同的是,cpp是按订单数量,cps是订单金额,一般以采用cps居多

CPT(Cost Per Time)即按照一个时间段进行展示来费用,一般为1天,1周,1月。以一个固定价格去买断一段时间内的广告位展示,被称作最省心的投放方式。大多数平台方通过CPT是最快速也是最有效赚钱的合作方式。

3、其他术语:

Ctr(Click- Through Rate)点击率,

CVR(click value rate)指广告的转化率。

消耗:即成本(比如cpa模式下,1000元得到100个用户,成本即是10)

ROI:(Return on investment),指投入产出比,即一定周期内,广告主通过广告投放收回的价值占广告投入的百分比。数值大于1为盈利。即总销售收入/总消耗量(即广告费用)=LTV/总cost=平均注册用户的付费金额/CPA

LTV(用户生命周期价值,life time vaule)即这个用户在使用广告主产品的生命周期内给广告主带来的所有价值。比如当月、次月、……、第n月用户带来的收入,加总即为LTV

eCPM:(effective cost per mile),千次展示收益,是媒体衡量自己广告投产效率的指标,它是指每千次广告的曝光,能够给媒体带来多少的广告收入。这个值对媒体越大越好。eCPM=CPC×CTR×1000

UV 独立访客:一台电脑24小时以内访问N次计为1次

PUR付费率=付费人数/注册人数

留存用户数:留存用户是指未来一段时间内,再次登陆的用户。一般也次日留存数、七天留存数、30日留存数、60日留存数。留存率是衡量游戏质量的关键指标

留存率:特定周期内,留存用户数量占广告导入注册用户数量的比例。留存率= 留存用户数/注册量*100%

活跃用户数:一段时间内再次登录或者未来几天内多次登录的用户;

ARPU(Average Revenue Per User)平均每用户贡献的收入:指在特定周期内,平均每一个注册用户贡献的收入。总付费金额除以注册人数

ARPPU(Average Revenue Per Paying User)平均每付费用户贡献的收入

:特定周期内,付费用户的平均付费金额。总付费金额除以付费人数

留存成本:单个留存用户的获取成本;留存成本=消耗/留存用户数;

活跃成本:单个活跃用户的获取成本;活跃成本=消耗/活跃用户数;

付费成本:单个付费用户的获取成本,付费成本=消耗/付费用户数;

三、CPM公式推导

1、基本逻辑

不管是CPM,CPC还是后续的CPA,OCPM,oCPC,双出价等所有出价模式,绝大多数媒体平台最终都是根据换算公式,将出价换算成eCPM,再对eCPM排序后,选择eCPM最高的广告进行展现。这样媒体每个展现机会的收益可以很直接地被度量,也能最大化自身的利益,因此各广告主的竞价点大多数还是在M上,只不过出价点和计费点不同。eCPM是从媒体角度出发,衡量自身广告能获得收益的指标,可分解为点击率和点击价值的乘积。eCPM=CPC×CTR×1000

-CTR:点击率,描述的是发生在媒体上的行为

-CPC:点击价值,即单次点击为广告产品带来的收益

2、各计费方式之间换算:

从 展示m→点击c→下载i→注册激活a→付费p的过程中,每个行为的价格,等于后续行为的价格乘以两者之间的概率。例如

CPM=p(m→c) *CPC * 1000=CTR*CPC * 1000

p(m→c)指展示与点击之间的概率,即点击率

3、CPM公式

cpm = p(m→p)* 预估付费出价 *1000= p(m→p)* 预估付费出价 *1000=点击率*转化率* 预估付费出价 *1000

CPM公式举例:假设我们在推广一款游戏,通过核算得到一个付费用户的获取成本在80元以下,而付费用户带来的收入比获取成本大,就能有钱赚。也就是说,广告主内心有个预估付费用户出价,即80元。那么广告主会根据之前的投放数据,估计从p(m→p)的概率,假设估计点击率CTR (m→c)大概0.03,下载率p(c→i)大概0.1,注册率p(i→a)大概0.4,付费率p(a→p)大概0.1,那么整个p(m→p)就是0.03*0.1*0.4*0.1=0.00012,所以有

cpm = p(m→p)* 隐含付费出价 *1000= 0.00012 *80 * 1000 = 9.6元

所以广告主的CPM出价就设为9.6元。

原文:https://zhuanlan.zhihu.com/p/146391463

如何在小程序中添加广告并获取收益

1、申请成为流量主
首先进入小程序后台,点击流量主,点击开通。

同意协议并点击下一步。

填写个人的相关信息,包括身份证、收款账户等等。

最后提交,系统会进行审核,审核时间说是大约一周,但是我上午提交的申请,下午就通过了,效率还是挺高的。

2、在小程序中嵌入广告
审核通过后,后台界面会做出相应的变化,我们根据提示来创建广告位。

点击立即创建,填写广告的名称,点击确定。

创建好后就会显示在管理页面中,你也可以选择创建多个广告,但是有些广告的曝光率会比较低。

点击获取代码,将广告位的代码复制下来,并放在小程序的相应位置

然后打开微信开发者工具,打开你的小程序工程,在相应的位置粘贴广告代码,保存编译,广告就显示在小程序中了。至于广告的位置,建议放在底部最为合适,如果放在中间,用户的体验会非常的不好。

最后上传代码,并提交给后台进行审核,审核通过后,你的小程序便可以重新发布,小程序下面就出现了广告banner。扫描下面的小程序码查看效果,记得点一下小程序的广告哦,点广告的人一天都会有好运气的。

3、收益统计

在后台可以对小程序广告的点击次数、曝光量以及收益进行统计,平均点击一次的收益为0.5元,所以假如你的小程序的用户数量足够庞大,完全就能够实现财务自由了。


————————————————
原文链接:https://blog.csdn.net/qq_37954086/article/details/81052989

php将字符串转为二进制数据串

/**
    * 将字符串转换成二进制
    * @param type $str
    * @return type
    */
    function StrToBin($str){
        //1.列出每个字符
        $arr = preg_split('/(?<!^)(?!$)/u', $str);
        //2.unpack字符
        foreach($arr as &$v){
            $temp = unpack('H*', $v);
            $v = base_convert($temp[1], 16, 2);
            unset($temp);
        }

        return join(' ',$arr);
    }

    /**
    * 将二进制转换成字符串
    * @param type $str
    * @return type
    */
    function BinToStr($str){
        $arr = explode(' ', $str);
        foreach($arr as &$v){
            $v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16));
        }
        return join('', $arr);
    }

原文:https://www.cnblogs.com/chenggege/p/7761287.html

php接口返回xml格式

在头部加上

  header("Content-type: application/xml");

范例:

$res = $this->arrayToXml($data,$amount['count'],$page_count,$page);
header("Content-type: text/xml");
echo $res;
//数组转XML
    public function arrayToXml($data,$amount,$page_count,$page)
    {
//    	var_dump($data);die;
        $xml = "<response><code>0</code><msg>成功</msg><total_results>{$amount}</total_results><total_page>{$page_count}</total_page><current_page>{$page}</current_page><order_list>";
 
        foreach ($data as $key=>$val)
        {
            $xml.= "<order><modified></modified><receiver_zip>-</receiver_zip><is_tax>false</is_tax><invoice_type></invoice_type><invoice_title></invoice_title><buyer_cod_fee>0.0</buyer_cod_fee><point_fee></point_fee><coupon_pay></coupon_pay><payments></payments>";
            foreach($val['order'] as $k=>$v){
                if (is_numeric($v)){
                    $xml.="<".$k.">".$v."</".$k.">";
                }else{
                    $xml.="<".$k.">".$v."</".$k.">";
                }
            }
            $xml.= "<itemlist>";
            foreach($val['itemlist'] as $key=>$vv){
                $xml.= "<item>";
                foreach($vv as $kk=>$vs){
                    $xml.="<".$kk.">".$vs."</".$kk.">";
                }
                $xml.= "<shop_sku_id></shop_sku_id><sku_name></sku_name><oid></oid><amount></amount></item>";
            }
            $xml.= "</itemlist>";
            $xml.= "</order>";
 
        }
        $xml.="</order_list></response>";
        return trim($xml);
    }

使用php://input接收数据流(还有多个参数的解决办法)

最近的工作中接触到一个手机上传图片到服务器的小程序,刚开始一直在想该用怎样的方式去接收数据,最后在网上看到大家都用php://input来接收。就去查了下php://input的官方介绍,确实可以,除了在enctype=”multipart/form-data”情况下,是无法接收到流的,其他情况下都可以。既然这个可以,我就在本地先写个测试文件

上传文件
<?php
//@file phpinput_post.php
$data=file_get_contents(‘btn.png’);
$http_entity_body = $data;
$http_entity_type = ‘application/x-www-form-urlencoded’;
$http_entity_length = strlen($http_entity_body);
$host = ‘127.0.0.1’;
$port = 80;
$path = ‘/image.php’;
$fp = fsockopen($host, $port, $error_no, $error_desc, 30);
if ($fp) {
fputs($fp, “POST {$path} HTTP/1.1\r\n”);
fputs($fp, “Host: {$host}\r\n”);
fputs($fp, “Content-Type: {$http_entity_type}\r\n”);
fputs($fp, “Content-Length: {$http_entity_length}\r\n”);
fputs($fp, “Connection: close\r\n\r\n”);
fputs($fp, $http_entity_body . “\r\n\r\n”);

while (!feof($fp)) {
$d .= fgets($fp, 4096);
}
fclose($fp);
echo $d;
}
?>

接收文件

运行test.php你就可以看到相应的结果,成功了,也在相应目录下看到了我刚才上传的文件。如果你做服务端,就只需要接收文件里面的php代码了。我上面模拟的上传就需要根据客户端来相应构造了,我后面也和客户端对接上了。所以是可以用的,还有就是客户端上传的时候可能会一些数据问题,因为我们在这个过程中出现了各种状况。

下文转自:http://www.0377joyous.com/archives/1135.html

今天公司要求用APP发送一个图片到PHP程序接收并保存起来,而且中间还需要很多参数!
以前没有做过APP和PHP交互,这次算是一个挑战吧(对一个没有人指导实习生来说)

1.APP发1.jpg,而且带有两个参数一个是假设是X和另外一个假设是Y
2.PHP负责接受X,Y和1.jpg,并且还要保存1.jpg到服务器
步骤:
1.PHP页面代码
$data = file_get_contents(‘php://input’);//这样可以获取到未经处理的原数据(保持发送的图片流不被破坏),在APP上使用X#Y#图片流使用http发送到PHP页面
//然后PHP页面进行数据处理和分割
2.数据处理
先分割数据流
$vars = explode(“#”,$data,3);//这样防止对图片流造成破坏只分割成三份即可
/省去若干代码/
$img = $vars[2];
$path = ‘/var/www/uploads/’;
$newfilename = time().”.jpg”;
$file = $path.$newfilename;
$handle = fopen($file, “w”);

if ($handle) {fwrite($handle,$img);
fclose($handle);
}

当PHP和C、C++、.net等应用程序进行开发的时候,应用程序使用POST方法传值过来PHP使用 $data=file_get_contents(‘php://input’),$data就是传过来的数据,而php://input不能用于 enctype=”multipart/form-data”。当需要给传值过来的程序 返回值的时候直接用echo返回就可以。

原文:https://blog.csdn.net/lemqs0123/article/details/46858993

php解析xml转数组

php解析xml数据并转换成数组。使用simplexml_load_string()转xml对象,json_encode()把对象转成json,json_decode()转成数组。

        simplexml_load_file()  加载xml url

        simplexml_load_string()  加载xml 字符串

  1. <?php
  2. $xml = ‘<?xml version=”1.0″ encoding=”utf-8″?>
  3. <res>
  4.     <name>test</name>
  5.     <age>10</age>
  6.     <sex>man</sex>
  7. </res>’;
  8. $xml =simplexml_load_string($xml); //xml转object
  9. $xml= json_encode($xml);  //objecct转json
  10. $xml=json_decode($xml,true); //json转array
  11.  
  12. var_dump($xml);

php获取随机字符串的几种方法

方法一:shuffle函数(打乱数组)和mt_rand函数(生成随机数,比rand速度快四倍)

/**
获得随机字符串
@param $len 需要的长度
@param $special 是否需要特殊符号
@return string 返回随机字符串
*/
function getRandomStr($len, $special=true){
$chars = array(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
"3", "4", "5", "6", "7", "8", "9"
);
if($special){
$chars = array_merge($chars, array(
"!", "@", "#", "$", "?", "|", "{", "/", ":", ";",
"%", "^", "&", "*", "(", ")", "-", "_", "[", "]",
"}", "<", ">", "~", "+", "=", ",", "."
));
}
$charsLen = count($chars) - 1;
shuffle($chars); //打乱数组顺序
$str = '';
for($i=0; $i<$len; $i++){
$str .= $chars[mt_rand(0, $charsLen)]; //随机取出一位
}
return $str;
}

方法二、str_shuffle函数(打乱字符串顺序)和mt_rand函数

//取随机10位字符串 
$strs="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
$name=substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),10);
echo $name;

方法三、md5(),uniqid(),microtime()生成唯一的32位字符串

$uniqid = md5(uniqid(microtime(true),true)); //microtime(true) 返回系统当前时间戳的毫秒数

其他方法:

/**
     * 方法一:获取随机字符串
     * @param number $length 长度
     * @param string $type 类型
     * @param number $convert 转换大小写
     * @return string 随机字符串
     */
    function random($length = 6, $type = 'string', $convert = 0)
    {
        $config = array(
            'number' => '1234567890',
            'letter' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
            'string' => 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789',
            'all' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
        );

        if (!isset($config[$type]))
            $type = 'string';
        $string = $config[$type];

        $code = '';
        $strlen = strlen($string) - 1;
        for ($i = 0; $i < $length; $i++) {
            $code .= $string{mt_rand(0, $strlen)};
        }
        if (!empty($convert)) {
            $code = ($convert > 0) ? strtoupper($code) : strtolower($code);
        }
        return $code;
    }

    /**
     * 方法二:获取随机字符串
     * @param int $randLength 长度
     * @param int $addtime 是否加入当前时间戳
     * @param int $includenumber 是否包含数字
     * @return string
     */
    function rand_str($randLength = 6, $addtime = 1, $includenumber = 0)
    {
        if ($includenumber) {
            $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQEST123456789';
        } else {
            $chars = 'abcdefghijklmnopqrstuvwxyz';
        }
        $len = strlen($chars);
        $randStr = '';
        for ($i = 0; $i < $randLength; $i++) {
            $randStr .= $chars[mt_rand(0, $len - 1)];
        }
        $tokenvalue = $randStr;
        if ($addtime) {
            $tokenvalue = $randStr . time();
        }
        return $tokenvalue;
    }

CSS 背景位置 background-position属性

除了背景背景平铺外,CSS还提供了另一个强大的功能,即背景定位技术,能够精确控制背景在对象中的位置。

默认情况下,背景图像都是从元素 padding 区域的左上角开始出现的,但设计师往往希望背景能够出现在任何位置。通过 background-position属性,可以很轻松的控制背景图像在对象的背景区域中的起始显示位置。其语法格式为:

  1. background-position: xpos ypos | x% y% | x y

CSS1中,background-position属性需要 2 个参数值,第一个值用于横坐标,第二个值用于纵坐标,默认值为 0% 0%,即背景图像的左上角与对象背景区域的左上角对齐。如果只提供一个值,则用于 x 轴方向,y 轴方向使用默认值 center,即垂直居中。

上述语法格式表明,背景图像有 3 种定位方式:

1)xpos ypos:表示使用预定义关键字定位,水平方向可选关键字有 left | center | right,垂直方向可选关键字有 top | center | bottom。

关键字定位,应用的是对齐规则,而不是坐标规则。xpos 为 left 表示图像的左边与对象的左边对齐,为 right 表示图像的右边和对象的右边对齐;ypos 为 top 表示图像的顶部和对象的顶部对齐,为 bottom 表示图像的底部和对象的底部对齐;xpos、ypos等于 center表示图像在水平和垂直方向的中心,和对象在水平和垂直方向的中心对齐,即。

依然使用前面的背景图案 bg.gif,其尺寸为 100px * 100px,对象的尺寸为 200px * 200px,背景图像的位置使用预定义关键字定位。如:

  1. div {
  2. width: 200px;
  3. height: 200px;
  4. border: 1px dashed #ccc;
  5. background-repeat: no-repeat;
  6. background-position: center center;
  7. background-image: url(img/bg.gif);
  8. }

上述定位,就表示背景图像的中心,与背景区域的中心对齐,即背景图像位于对象的中央位置。运行结果如图 4‑28 所示:

背景图像关键字定位

图4-28 背景图像关键字定位

2)x% y%:表示使用百分比定位,是将图像本身(x%, y%)的那个点,与背景区域的(x%, y%)的那个点重合。最终得到背景图像起始位置坐标的计算公式为:

x = (对象的宽度 – 图像的宽度) * x%;

y = (对象的高度 – 图像的高度) * y%;

还是上面的例子,改为百分比定位,要使背景图像居中,只需把背景图像的位置设置为50% 50% 即可。使用上面的公式,得到背景图像起始位置的坐标为:

x:(200px – 100px) * 50%  = 100px * 50% = 50px

y:(200px – 100px) * 50%  = 100px * 50% = 50px

得到的结果与上例相同,限于篇幅,就不再截图了。当然,百分比的值也可以是负值,计算公式依然不变。还是上面的例子,把百分比改为 -50% -50%。此时,得到背景图像起始位置的坐标为:

x:(200px – 100px) * (-50%) = 100px * (-50%) = -50px

y:(200px – 100px) * (-50%) = 100px * (-50%) = -50px

运行结果如图 4‑29 所示:

背景图像百分比定位

图4-29 背景图像百分比定位

从上图可以看出,此时的背景图像只显示了原本图像的 1/4,这是因为背景图像的起始位置向左、向上移动后,只有1/4 的图案落到了背景区域。由于背景被设置为不重复,所以,就只显示了原本图像的 1/4。

3)x y:表示使用长度值定位,是将背景图像的左上角,放置在对象的背景区域中(x, y)所指定的位置,即 x, y 定义的是背景图像的左上角,相对于背景区域左上角的偏移量。

偏移量长度可以是正值,也可以是负值。x 为正值表示向右偏移,负值表示向左偏移;y 为正值表示向下偏移,负值表示向上偏移。背景图像发生移动后,就有可能超出对象的背景区域。此时,超出的部分将不会显示,只会显示落入背景区域的部分。

如果把上面的例子改为长度值定位,要使背景图像居中,只需把背景图像的位置设置为50px 50px 即可。它就表示背景图像的左上角顶点,相对于对象背景区域的左上角顶点在 x轴右移 50px,在 y 轴下移 50px。得到的结果依然是背景图像位于对象的中央。

在CSS3中,background-position属性支持 4 个参数值,前两个值用于横坐标,后两个值用于纵坐标。这意味着我们可以相对于上左下右任意一个角落定位,而不是之前只能相对于左上角定位。可以用长度值、或百分比来指定背景图像的起始位置。

如果只提供一个值,则第二个值为center。如果提供两个值,第一个长度或百分比表示水平偏移,第二个长度或百分比表示垂直偏移。长度或百分比,表示背景图像的左上角相对于背景位置区域左上角的偏移。如,下面几个声明给出了背景的起点相对于背景区域左上角的偏移:

  1. background-position: left 10px top 15px; /* 10px, 15px */
  2. background-position: left top ; /* 0px, 0px */
  3. background-position: 10px 15px; /* 10px, 15px */
  4. background-position: left 15px; /* 0px, 15px */
  5. background-position: 10px top ; /* 10px, 0px */
  6. background-position: left top 15px; /* 0px, 15px */
  7. background-position: left 10px top ; /* 10px, 0px */

原文:https://blog.csdn.net/ixygj197875/article/details/79333151