HP 过滤器 - 用于数据过滤和验证的强大工具
示例代码demo:
```php
<?php
// 定义一个数组,用于存储用户输入的数据
$userData = array(
'name' => '<script>alert("XSS attack!");</script>',
'email' => 'test@example.com',
'age' => '25'
);
// 使用过滤器对用户输入的数据进行过滤和验证
$filteredData = array(
'name' => filter_var($userData['name'], FILTER_SANITIZE_STRING),
'email' => filter_var($userData['email'], FILTER_VALIDATE_EMAIL),
'age' => filter_var($userData['age'], FILTER_VALIDATE_INT)
);
// 输出过滤后的数据
echo "过滤后的数据:<br>";
echo "姓名:" . $filteredData['name'] . "<br>";
echo "邮箱:" . $filteredData['email'] . "<br>";
echo "年龄:" . $filteredData['age'] . "<br>";
?>
```
使用心得:
PHP 过滤器是一个非常方便和强大的工具,可以帮助我们对用户输入的数据进行过滤和验证,确保数据的安全性和有效性。在开发过程中,我发现过滤器的使用非常简单,只需要使用`filter_var()`函数,并指定相应的过滤器类型即可。过滤器类型包括`FILTER_SANITIZE_STRING`用于过滤字符串,`FILTER_VALIDATE_EMAIL`用于验证邮箱,`FILTER_VALIDATE_INT`用于验证整数等等。
通过使用过滤器,我可以轻松地过滤用户输入的数据,防止XSS攻击和其他安全漏洞。同时,过滤器还可以验证输入的数据是否符合特定的格式要求,例如邮箱地址必须包含@符号,年龄必须是整数等等。这样可以确保我们得到的数据是合法和有效的,减少了后续处理数据的麻烦和错误。
在开发过程中遇到的问题和解决的bug:
1. 问题:用户输入的姓名中包含了恶意的脚本代码,导致页面出现了XSS攻击。
解决:使用`FILTER_SANITIZE_STRING`过滤器对用户输入的姓名进行过滤,去除其中的HTML和脚本代码。
2. 问题:用户输入的邮箱地址格式不正确,无法通过后续的邮件发送验证。
解决:使用`FILTER_VALIDATE_EMAIL`过滤器对用户输入的邮箱地址进行验证,确保其符合邮箱地址的格式要求。
3. 问题:用户输入的年龄不是整数,无法进行后续的计算和比较。
解决:使用`FILTER_VALIDATE_INT`过滤器对用户输入的年龄进行验证,确保其是一个整数。
总结:
PHP 过滤器是一个非常实用的工具,可以帮助我们过滤和验证用户输入的数据。通过合理使用过滤器,我们可以提高数据的安全性和有效性,避免安全漏洞和错误数据的产生。在开发过程中,我们需要根据具体的需求选择合适的过滤器类型,并注意处理可能出现的问题和bug,以确保代码的稳定性和安全性。
(注:以上内容为笔记,非官方文档)
i,你好呀,我是May。
今天继续跟大家分享游戏本地化常见的源文档,PO文件~
(其实之前写过一篇简单的,这次更新为新内容~)
在进行游戏和应用程序本地化时,我们最常见的文档是多语言Excel文档,详见。
此外,还有一种常见的语言包文档,就是PO文件。
比如我在电脑一搜,就找到很多语言包的PO文档,如剪映云的PO文件。
所以今天分享:如何翻译多语言的PO文档。
PO是portable object (可跨平台对象)的缩写,可以被Java程序、GNU gettext或其他软件程序作为属性文件引用,是应用程序本地化时常见的文档。
我的观点还是:我们本地化人员不是程序员,不需要会写,只要认识就行!
我们来以一个demo文档认识一下,什么是PO文档:
这里的例子我就用我下载好的剪映云自带的PO文档做案例了,如有侵权,联系修改~
PO文件的数据结构长这样。其中:
# 井号后面一般是注释;
msgid ""——msgid空格引号,引号内是原文;
msgstr ""——msgstr空格引号,引号内是原文翻译结束后的译文的内容。
根据编程语言不同,原文可能会含有HTML样式或其它占位符,翻译时必须保留这些字符串。
既然是注释,也注释的类型怎么区分呢?在PO中,具体的注释类型由紧随井号的字符决定,比如:
#—— 井号后面紧跟空格,是译员的注释;
#.——井号后面紧跟紧跟句点,是额外注释,一般是从源代码注释生成;
#:—— 井号后面紧跟冒号,表明待翻译语句的出处,一般标记源代码文件及行数;
#,—— 井号后面紧跟逗号,一般是由编译器生成的格式注释。
有时,同一个句子在不同的场景里要翻译成不同的意思。所以为了区分上下文的场景,在PO文件中也会通过 msgctxt 字段,来明确句子在程序中的具体位置和含义。
对于有单复数的语言而言,PO支持设置单复数区分。
CCJK(简中繁中日韩)是没有单复数的,就不行~
那,这样的文件如何翻译呢?
memoQ支持直接导入PO文件。
对于含有占位符或HTML样式的文档,还可以借助层叠过滤器实现。
层叠层叠嘛,第一层是PO gettext(也就是PO)过滤器,第二层是HTML过滤器,也可以再加一层正则表达式标注器。
直接将文件导入至项目即可。
如果原文中有想<color=yellow>和{PropName}或者 \n 这样的字符串和非译元素,需要再加一层正则表达式标注器,并设置正则定义方式。
——这样的话原文中的非译元素可以固定为标签,译员就不会误翻译。
Step 1:在导入项目时,使用“选择性导入”;
Step 2:选择好原文后,默认用的过滤器是PO gettext过滤器。因为原文有字符串,这里选择“更改过滤器和配置”;
Step 3:添加一层正则表达式标注器,并设置正则定义方式;
Step 4:设置完成过滤器,保存层叠过滤器,以供下次使用。然后,点击“确定”即可。
我写过一篇应用程序本地化中常用字符串和正则表达式推荐,你可以来学习正则。
当然,memoQ自带了一个tags and entities的标注器,内嵌了像 <color>这样的标签,也设置了哪些是开标签哪些是关闭标签,你也可以直接使用,还是不错的。
导入完成文档后,即可在memoQ中进行翻译了。
在翻译过程中,你会发现:
msgid中的原文就提取出来了,可以安心做翻译;
下方还可以预览原文和译文。
翻译结束后,导出就OK啦。
导出译文的操作可以参考。
这里用了机器翻译的结果。
好啦,希望你上内容可以帮到你,有用可收藏~
特别说明:本文仅用于学术交流,如有侵权请后台联系小编删除。
- END -
转载来源:职业译员玩转翻译技术
转载编辑:李倩楠
条件渲染
1、v-if、v-else-if与v-else,写法:v-if="表达式" ,不展示的DOM元素进行了移除,要求结构不能被“打断”,适用于切换频率较低的场景。
2、v-show,写法:v-show="表达式",不展示的DOM元素没有移除使用了样式进行隐藏,适用于切换频率较高的场景。
列表渲染
1、v-for,写法:v-for="(item, index) in XXX" :key="YYY",可遍历:数组、对象、字符串、指定次数;
2、遍历数组:v-for / index;遍历对象:v-for / key。
3、key的作用,key是虚拟DOM对象的标识,当数据发生变化时,会根据新数据生成新的虚拟DOM,新虚拟DOM与旧虚拟DOM差异比较,而后渲染到页面。
4、DIFF算法,DIFF是广泛的概念,如git的diff,js对象diff等,两棵树做diff,即虚拟DOM中的diff算法。
5、diff算法的必要性:渲染真实DOM的开销是很大的,轻微的操作都可能导致页面重新排版,非常耗性能,相对于DOM对象,js对象处理起来更快,而且更简单,通过diff算法对比新旧vdom之间的差异,可以批量的、最小化的执行dom操作,从而提高性能。
操作表单数据
过滤器
*请认真填写需求信息,我们会在24小时内与您取得联系。