PHP字符串分割让你头疼?W3C标准更让你抓狂!如何轻松搞定?

今天咱们得聊聊PHP就是那字符串分家的事,再顺便聊聊W3C就是那标准。别小看这俩,它们在某些时候还挺能玩出花儿来的。特别是你从网页上抓点啥数据的时候,W3C那啥标准能让你头疼,PHP那啥分割函数更让你头疼。

字符串分割的基础操作

咱们得聊聊PHP里那最常用的字符串切分工具——explode()。这货操作起来直接了当,就是按照你定的分隔符,把那字符串一刀切,整成个数组。好比说:


$str = "apple,banana,orange";
$arr = explode(",", $str);
print_r($arr);

输出结果就是:

Array

(

[0] => apple

[1] => banana

[2] => orange

)

这不就是小case?可问题来了,要是字符串里冒出些古怪的符号,或者符号两边还带着空格,你打算咋整?比如:

这货里头有苹果、香蕉、橙子,就这仨。

输出结果:

[1] => banana

[2] => orange

瞧见没?那bananaorange前头突然多出个空格小家伙。这时候你得手动给它来个“瘦身术”了。

这货儿把那串儿逗号分隔的字符串给拆了,然后对每一段儿都来个去头去尾的洗漱,弄出一堆干净利索的字符串来。

这样输出就干净了:

W3C标准的坑

咱们来聊聊这W3C标准,那可是网页开发的圣典,谁都得照着来。不过,有时候这标准里的某些条款,比如HTML标签里的空格处理,会让你在字符串处理上头大如斗。

假设你从网页上抓了一段HTML代码:

html

<div>apple, banana, orange</div>

搞个正则表达式或者啥的来捞点文字出来,要是弄到了“苹果、香蕉、橙子”这些货,你想来个“爆炸”操作切开来玩。可别急,你发现里面的空格可不止一个两个,还可能有换行、表格符啥的乱七八糟的。

这时候,你可能会想到用正则表达式来处理:

这货里头有苹果,还有香蕉,再不济还有个橙子。

这货把那字符串用逗号给劈成了几块。

这东西看着挺美,可别忘了,按照W3C那套规矩,对那些特殊符号有它自己的玩法。比如说,你代码里头可能得用到HTML实体符号(比如那个 ),这时候你得先把这些符号给解码了才能用。

这货,就俩字儿,苹果、香蕉、橙子,连起来就那么几个。

这货得先给字符串来个脱壳大法,把那些HTML实体字符全给还原成真身。

<b>更复杂的情况</b>

有时候,碰到的麻烦可不止逗号那么简单。瞧瞧,字符串里头,符号多得跟开了锅似的,啥都有,还有那些套娃似的嵌套分隔符,真是让人头大。

这货里头有苹果、香蕉,还有橙子和葡萄,逗号和分号、竖线分得清清楚楚。

这时候,你可能需要用到更复杂的正则表达式:

这货儿把那字符串一劈两半,弄出一堆碎片,就那么简单。

这东西挺带劲,不过要是你想留着啥分隔符,比如那小圆点;啥的,就得把PREG_SPLIT_DELIM_CAPTURE这东西给整上。

这东西把那字符串给劈开了,用逗号、分号、竖线当刀,一刀下去,直接把东西给分了,一个不留神,连符号都给吞了。

[1] => ,

[2] => banana

[4] => orange

<b>处理多字节字符</b>

搞中文这事,得小心点。PHP里那俩函数,explode()preg_split(),它们默认按字节来分。你要是直接拿它们对付中文,那可就闹笑话了。不信你试试,保不齐就给你整出点乱七八糟的东西来。

$str = "苹果,香蕉,橙子";

[0] => 苹果

[1] => 香蕉

[2] => 橙子

这看起来没问题,但要是你那逗号是那种多字节的货色,比如中文里的那个逗号,,那咱就得祭出mb_split()这招了。

$str = "苹果,香蕉,橙子";

$arr = mb_split(",", $str);

<b>总结</b>

PHP这东西切字符串看似小菜一碟,可真要一用到实际,特别是一跟W3C那套标准搅和起来,分分钟给你挖坑。要搞定这些难题,关键得看:

先来给字符串来个美容,比如把多余的空格给消掉,把那些HTML里的特殊符号给解码回原样。

挑个对路的函数:看具体情况,要么用explode(),要么preg_split(),或者来个mb_split()`。

处理那些中文,其他多字节字符,得用对方法,对路子的函数和编码。

代码测试别忘,尤其得留心那些从网页上捞来的数据。得小心各种边缘情况,毕竟,W3C标准虽然挺规矩,可现实中的网页那可就不怎么规矩了。

今天个的分享到此结束。要是你有啥高招,评论区见哈。下次咱们再聚!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值