2024-12-21 13:12:17
大家好,今天小编关注到一个比较有意思的话题,就是关于php乱码的问题,于是小编就整理了4个相关介绍php乱码的解答,让我们一起看看吧。
urlencode()编码:对字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。urldecode()解码:还原 URL 编码字符串。示例:
urlencode演示
点击连接后地址栏中汉字被编码了:http://localhost/decode.php?par=%E6%BC%94%E7%A4%BAphp-mysql------------------------------------------------------------------------//decode.php直接用json_decode,反序列化字符串,如何出错就是非标准,不出错就是标准。具体错误,json_last_error会返回,0表示没问题,非0,则是有问题。
引言
在MYSQL 5.6及以下没有 JSON 这个字段类型的时候,我们还只能用字符串存储数组,对象,这些结构数据;甚至有直接将序列化的对象存库的,都是无奈之举。
编程中也时不时对接口进行json_encode / json_decode。那么如果所得的字符串不是标准的格式,有什么办法快速检测吗?
本文就来说一说。
学习时间
最快的办法,还是使用PHP内置的 json_decode 函数,对于此函数的参数和返回值,我们需要认真地分析。
该函数接受一个 JSON 编码的字符串并且把它转换为 PHP 变量。函数结构:
mixed json_decode( string $json[, bool $assoc = false[, int $depth = 512[, int $options = 0]]] )
除了第一个字符串类型的$json必填之外,其他都是选填。如果我们定制功能,需要后面的参数也指定。比如,解码的字符串解析为关联数组,那么就指定 $assoc = true。
考虑到兼容性的要求,$json 传入的字符串,必须是 UTF-8 编码格式。
我们试着编写一个助手函数,用于判断字符串是否标准的json格式:
function isJson($string) { json_decode($string); return (json_last_error() == JSON_ERROR_NONE); }
这个方法使用了2个函数,和1个常量。其中 json_decode 是对字符串解码暂且不说。json_last_error 函数,如果有返回值,则是 JSON 编码解码时最后发生的错误。
JSON_ERROR_NONE 是无错误,=0。该句判断没有错误则是标准格式,返回 true;否则返回 false。
深入学习
其实上面的代码对于 json 加解码过程中的错误判断还是比较粗糙的。有一位小哥不嫌繁琐,手动拼装了详细的错误处理函数,非常实用。
使用上述函数进行测试:
$json = '[{"user_id":13,"username":"stack"},{"user_id":14,"username":"over"}]'; $output = json_validate($json); print_r($output);
输出内容如下:
这是正常的情况,json 格式完全正确。我们再测试一个不是规范格式的字符串。
$json = '{background-color:yellow;color:#000;padding:10px;width:650px;}'; $output = json_validate($json); print_r($output);
输出错误信息:
Syntax error, malformed JSON.
万能的正则
跟字符串打交道,正则表达式几乎可以做一切你想要的结果。json 字符串也一样,据文档所说,使用正则表达式判断JSON格式,稳定有效,而且速度还很快。
下面这个正则表达式您拿小本本记好了,一模一样地抄下来用就可以了。
return !preg_match('/[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]/', preg_replace('/"(\\.|[^"\\\\])*"/', '', $json_string));
写在最后
如果考虑程序的可读性,和可维护性,使用 json_decode 函数的判断无疑更直观,大家也更熟悉。然而正则表达式所体现出的高效也是不容小觑的。
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
这两个怎么比较?
PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。
MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(MovingPictureExpertsGroup,即MPEG)制定。
第一版在1998年10月通过,第二版在1999年12月通过。
MPEG-4格式的主要用途在于网上流、光盘、语音发送(视频电话),以及电视广播。
我也是正在自学PHP,分享一下我自学的体会,如有不确之处,请各位指正。
学习PHP其实并不太难,主要是学习的方法,首先你要确定学PHP你想做些什么,确定目标,至于什么CSS,JAVA,HTML,函数等,都不是重点,没有目标,盲目去学这些,到最后,你会觉得自己学什么都不行。如果一开始就学HTML\CSS\JAVA\MYSQL这些工具,你会觉得很无聊,没有什么实质性的展示,当然,如果你是想做前台项目,html和css这是必学,如果你想学数据处理,mysql等数据库处理也无法避免,如果你想做底层,JAVA就是逃不开的。但这些都是可以在你入门以后,根据实际需要或兴趣再去学习,学海无涯。
其次,根据你的目标有针对性学习,例如,你想做前台,可以学习thinkphp框架,在PHP中文网上有很的例子供你学习,但如果学习框架,一定一定一定要注意版本的问题,我就是在初学时,没有注意,在对着例子做的时候,很多的无法实现,网上视频十几分钟就可以实现的功能,自己做了几个小时,就因为同一框架不同版本,实现的功能的方法都会有区别。学习框架虽然可以很快实现团队或个人开发,同时,如果是自学,可以增强学习的信心,但由于框架与PHP基础不同,有时,你可能对于开发时出现的问题或BUG无法调试,或者说是无法绕过去,有甚连提问都问不到主题,这个时候,就需要真正去学习PHP基础,可以学习如何实现自己的MVC框架,这样就真正可以学习到PHP最基础的语言,同时,当遇到框架中无法实现的功能时,你就可以调用自己的框架。这样就可以进一步提高你的PHP功力
最后总结一下,学习开发,注重是动手能力和灵活调用,也就是说,好记性不如烂笔头,必需做好自己的自学记录,将自己学习的心得体会做好记录,否则,当再去看别人开发的时候,你无法去理解其精神,
自学php,首先要看题主是否有编程基础,不过题主都说了零基础,那就是最差的一种情况了,在这个情况下,首先建议题主在各大平台上,白嫖一下免费视频,这些足够题主入门了,然后就是进阶了。如果题主是学生,可以自己沟通一些公司,实习,语言不在实际场景中磨练,不经历埋坑,填坑这一个流程,是不可能进阶的。如果题主工作了,那就看看工作中有没有场景了,有的话写点东西,让大家怼一怼,就可以成长了,然后就是最关键的一步了,打开github,去找大神开源出来的代码,去学习大神怎么搞写的,经历了这一切以后,就可以开开心心的用php去养活自己啦。不过,既然是从头学习,为啥不选择一个更火一点的语言呢?比如go,比如py,比如rust
题主想学习编程么?
其实编程并不难,它就和你学习英语一样。
编程语言对于计算机而言,其实就是一门计算机能识别的语言。而php只是众多语言中的一种。
对于计算机编程语言而言,其实就是按照特定语法结构进行定义,并通过特定环境进行编译执行或者解释执行的。而php属于解释执行的这一类。相对而言也会比较简单。如果是初学者,建议先了解下php从编码到运行的全过程。先体会下编程的过程,然后再对过程中不能理解的地方进行百度或咨询有经验的程序员。具体方法与建议如下
学习步骤
1.搭建好php的运行环境
2.写一个hellworld
3.系统的学习语法结构
4.克隆两个开源项目运行并阅读源码并改造其中功能
5.参与两个实战项目,或者编写自己的小网站
学习资源
1.简易教程
runoob.com(入门级够用了)
2.视频教程
自行在bilibili上搜索吧,应该会有一大堆
3.开源社区
github.com
oschina.net
结语:本人是用java的,对php略有了解,学习过程中如有问题敬请咨询。最后祝题主早日学成
到此,以上就是小编对于php乱码的问题就介绍到这了,希望介绍关于php乱码的4点解答对大家有用。
上一篇:php 乱码,PHP乱码解决方法
下一篇:php技术,PHP技术是指
Copyright © 2005-2024 代潇瑞博客 www.daixiaorui.com All Rights Reserved.
免责声明: 1、本站部分内容系互联网收集或编辑转载,并不代表本网赞同其观点和对其真实性负责。 2、本页面内容里面包含的图片、视频、音频等文件均为外部引用,本站一律不提供存储。 3、如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除或断开链接! 4、本站如遇以版权恶意诈骗,我们必奉陪到底,抵制恶意行为。 ※ 有关作品版权事宜请联系客服邮箱:478923*qq.com(*换成@)
渝ICP备2023009091号-21