首页 > 后端开发 > 正文

php如何分割中文字符串

2024-08-13 14:31:42 | 我爱编程网

最近经常有小伙伴私信询问php如何分割中文字符串相关的问题,今天,我爱编程网小编整理了以下内容,希望可以对大家有所帮助。

本文目录一览:

php如何分割中文字符串

php如何分割中文字符串

php分割中文字符串,如果直接用PHP函数“str_split”来分割,会出现乱码,因为中文字符长度和英文字符长度是不一样的。 我爱编程网

所以,可以建立新的函数先把字符转成ASCII值,接着通过判断不同字符的长度来正确分割中文字符串,把结果存入数组,最后再用PHP函数“join”在字符间插入百分号。

具体参考代码如下:

<?php
function str_split_utf8($str){
 $split=1;
 $array=array();
 for($i=0;$i<strlen($str)){
  $value=ord($str[$i]);
  if($value>127){
   if($value>=192&&$value<=223) $split=2;
   elseif($value>=224 && $value<=239) $split=3;
   elseif($value>=240 && $value<=247) $split=4;
  }else{
   $split=1;
  }
  $key=NULL;
  for($j=0;$j<$split;$j++,$i++){
   $key.=$str[$i];
  }
  array_push($array,$key);
 }
 return $array;
}
$string="百度知道www.baidu.cn";
$arr1=str_split_utf8($string);
echo join("%",$arr1);
?>

php如何分割中文字符串

PHP5.5 将会带来哪些新特征

1、放弃对Windows XP和2003 的支持

PHP5.5 将不再支持Windows XP和2003,这些系统已经有十年的历史,所以PHP将不再提供支持。

2、弃用e修饰符

e修饰符是指示 preg_replace函数用来评估替换字符串作为PHP代码,而不只是仅仅做一个简单的字符串替换。不出所料,这种行为会源源不断的出现安全问题。这就是为什么在PHP5.5 中使用这个修饰符将抛出一个弃用警告。作为替代,你应该使用 preg_replace_callback函数。你可以从 RFC找到更多关于这个变化相应的信息。

新增函数和类

接下来,我们将看到在计划之中的新增函数和类:

boolval()

PHP已经实现了strval、intval和floatval的函数。为了达到一致性将添加boolval函数。它完全可以作为一个布尔值计算,也可以作为一个回调函数。

hash_pbkdf2()

PBKDF2全称“Password-Based Key Derivation Function 2”,正如它的名字一样,是一种从密码派生出加密密钥的算法。这就需要加密算法,也可以用于对密码哈希。更广泛的说明和用法示例,请参阅 RFC。

intl 扩展

将有许多改进 intl的扩展。例如,将会有新的IntlCalendar,IntlGregorianCalendar,IntlTimeZone,IntlBreakIterator,IntlRuleBasedBreakIterator,IntlCodePointBreakIterator类。之前,我竟然不知道有这么多关于intl扩展,如果你想知道更多,我建议你去最新公告里找 Calendar和 BreakIterator。

array_column()

有一个 提议,新增array_column(或array_pluck)函数,它的表现如下:
<?php

$userNames = array_column($users, 'name');
// is the same as
$userNames = [];
foreach ($users as $user) {
$userNames[] = $user['name'];
}
像这样从数据库获取一列,但返回是数组。

一个简单的密码散列API

最近的密码泄漏(从LinkedIn等)显示,即使是大型网站也不知道如何正确地散列密码。几年前人们一直提倡使用bcrypt,但大多数人似乎仍然是使用完全不安全的sha1哈希值。

我们认为这样做的原因可能是真的很难使用crypt函数的API。因此我们会采用一个新的、简单的API,用于安全的密码散列:
<?php

$password = "foo";

// creating the hash
$hash = password_hash($password, PASSWORD_BCRYPT);

// verifying a password
if (password_verify($password, $hash)) {
// password correct!
} else {
// password wrong!
}
新的散列API提供了一些更多的特性,请参阅 RFC。

语言改变

现在真正有趣的东西:新的语言特性和增强功能。

常量引用

“常量引用”意味着数组可以直接操作字符串和数组字面值。举两个例子:
<?php

function randomHexString($length) {
$str = '';
for ($i = 0; $i < $length; ++$i) {
$str .= "0123456789abcdef"[mt_rand(0, 15)]; // direct dereference of string
}
}

function randomBool() {
return [false, true][mt_rand(0, 1)]; // direct dereference of array
}
我不认为在实践中会使用此功能,但它使语言更加一致。请参阅 RFC。

调用empty()函数(和其他表达式)一起工作

目前,empty()语言构造只能用在变量,而不能在其他表达式。在特定的代码像empty($this->getFriends())将会抛出一个错误。作为PHP5.5 这将成为有效的代码。更多信息请参阅 RFC。

获取完整类别名称

PHP5.3 中引入命名空间的别名类和命名空间短版本的功能。虽然这并不适用于字符串类名称:
<?php

use Some\Deeply\Nested\Namespace\FooBar;

// does not work, because this will try to use the global `FooBar` class
$reflection = new ReflectionClass('FooBar');
为了解决这个问题采用新的FooBar::class语法,它返回类的完整类别名称:
<?php

use Some\Deeply\Nested\Namespace\FooBar;

// this works because FooBar::class is resolved to "Some\\Deeply\\Nested\\Namespace\\FooBar"
$reflection = new ReflectionClass(FooBar::class);
更多示例请参阅 RFC。

参数跳跃

如果你有一个函数接受多个可选的参数,目前没有办法只改变最后一个参数,而让其他所有参数为默认值。

RFC上的例子,如果你有一个函数如下:
function create_query($where, $order_by, $join_type='', $execute = false, $report_errors = true) { ... }
那么有没有办法设置$report_errors=false,而其他两个为默认值。为了解决这个跳跃参数的问题而提出:
create_query("deleted=0", "name", default, default, false);
我个人不是特别喜欢这个提议。在我的眼睛里,代码需要这个功能,只是设计不当。函数不应该有12个可选参数。

标量类型提示

标量类型提示原本计划进入5.4,但由于缺乏共识而没有做。获取更多关于为什么标量类型提示没有做进PHP的信息,请参阅: 标量类型提示比你认为的更难。

对于PHP5.5 而言,针对标量类型提示讨论又一次出现,我认为这是一个相当不错的 提议。

它需要通过输入值来指定类型。例如:123,123.0,“123”都是一个有效的int参数输入,但“hello world”就不是。这与内部函数的行为一致。
function foo(int $i) { ... }

foo(1); // $i = 1
foo(1.0); // $i = 1
foo("1"); // $i = 1
foo("1abc"); // not yet clear, maybe $i = 1 with notice
foo(1.5); // not yet clear, maybe $i = 1 with notice
foo([]); // error
foo("abc"); // error
Getter 和 Setter

如果你从不喜欢写这些getXYZ()和setXYZ($value)方法,那么这应该是你最受欢迎的改变。提议添加一个新的语法来定义一个属性的设置/读取:
<?php

class TimePeriod {
public $seconds;

public $hours {
get { return $this->seconds / 3600; }
set { $this->seconds = $value * 3600; }
}
}

$timePeriod = new TimePeriod;
$timePeriod->hours = 10;

var_dump($timePeriod->seconds); // int(36000)
var_dump($timePeriod->hours); // int(10)
当然还有更多的功能,比如只读属性。如果你想要知道更多,请参阅 RFC。

生成器

目前,自定义迭代器很少使用,因为它们的实现,需要大量的样板代码。生成器解决这个问题,并提供了一种简单的样板代码来创建迭代器。

例如,你可以定义一个范围函数作为迭代器:
<?php

function *xrange($start, $end, $step = 1) {
for ($i = $start; $i < $end; $i += $step) {
yield $i;
}
}

foreach (xrange(10, 20) as $i) {
// ...
}
上述xrange函数具有与内建函数相同的行为,但有一点区别:不是返回一个数组的所有值,而是返回一个迭代器动态生成的值。

获取更深入的介绍请参阅 RFC。

列表解析和生成器表达式

列表解析提供一个简单的方法对数组进行小规模操作:
$firstNames = [foreach ($users as $user) yield $user->firstName];
上述列表解析相等于下面的代码:
$firstNames = [];
foreach ($users as $user) {
$firstNames[] = $user->firstName;
}
也可以这样过滤数组:
$underageUsers = [foreach ($users as $user) if ($user->age < 18) yield $user];
生成器表达式也很类似,但是返回一个迭代器(用于动态生成值)而不是一个数组。

php如何分割中文字符串

怎样把php数组转换成字符串,php implode

我爱编程网(https://www.52biancheng.com)小编还为大家带来怎样把php数组转换成字符串,php implode的相关内容。

具体步骤如下:

1、首先新建一个PHP文档,并定义一个数组,示例:$arr = array("I","have","an","apple")。

2、使用implode()函数,将数组转为字符串,示例:$str = implode($arr)。

3、将数组转换之后的字符串打印出来,示例:echo $str。

4、保存以上内容,在浏览器查看预览。

5、implode()函数有一个分隔符参数是可选的,可以指定数组元素分隔符(如不指定分隔符,默认情况是一个空的字符),示例:$str = implode("+++",$arr)。

6、打印有分隔符的字符串,即可将php数组转换成字符串。

以上就是我爱编程网小编整理的内容,想要了解更多相关资讯内容敬请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“php如何分割中文字符串”相关推荐
python如何用分割符把字符串变列表?
python如何用分割符把字符串变列表?

python如何用分割符把字符串变列表?str[0].split(".")#str[0]取出第一个字符串,然后利用split()函数,用分隔符"."将字符串变为列表。str[0].split(",")#用分隔符","将字符串变为列表。str[0].split("")#用分隔符""(空格),将字符串变为列表。在一行上写多条python语句用什么分割python一行写多条语句

2023-12-20 17:15:23
php中用explode函数 explode — 使用一个字符串分割另一个字符串?
php中用explode函数 explode — 使用一个字符串分割另一个字符串?

PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式在开发的过程中,经常会遇到需要给别人提供一个输入框,然后别人输入一些ID,或者关键字的东西,例如wordpress的后台的标签输入框:这个就是只是判断英文状态下的逗号,要是有人不小心输入了中文状态下的逗号怎么办?小数点怎么办?于是我就用正则写了一个表达式,把带有空格换行符之类的替换成逗号。把提交的id带有空格换行符之类的

2024-10-26 02:10:51
PHP字符串替换技巧(php中利用explode函数分割字符串到数组)
PHP字符串替换技巧(php中利用explode函数分割字符串到数组)

PHP字符串替换技巧在系统测试过程中,PHP环境与代码是频繁使用的。今天,我将与大家分享一些PHP字符串替换技巧。一、str_replace()函数str_replace()是PHP中常用的字符串替换函数。它能将指定字符或字符串替换为另一个字符或字符串。其函数原型如下:其中,$search代表要替换的字符串或字符数组,$replace代表要替换成的字符串或字符数组,$sub

2024-11-21 08:01:51
split函数php php把字符串指定字符分割成数组
split函数php php把字符串指定字符分割成数组

php"str_split"函数分割中文字符串乱码问题……一个解决方案.测试发现,preg_split对中文(多字节)的分隔符处理可能真的存在问题.原因可能是正则匹配时不能正常分隔一个多字节字符(猜测).但我实验用半角(英文)的分隔符就工作得很好.于是我在处理待分隔的文本前先对文本进行替换,把中文的句点和逗号都替换成英文半角的.然后再使用preg_split,暂时发现工作

2024-09-10 19:24:42
thinkPHP里面有分割字符串的函数吗
thinkPHP里面有分割字符串的函数吗

php"str_split"函数分割中文字符串乱码问题……一个解决方案.测试发现,preg_split对中文(多字节)的分隔符处理可能真的存在问题.原因可能是正则匹配时不能正常分隔一个多字节字符(猜测).但我实验用半角(英文)的分隔符就工作得很好.于是我在处理待分隔的文本前先对文本进行替换,把中文的句点和逗号都替换成英文半角的.然后再使用preg_split,暂时发现工作

2024-10-04 18:55:19
PHP怎么分割字符串 输出二维数组
PHP怎么分割字符串 输出二维数组

php去掉字符串中的一段字符串可以用str_replace函数去掉字符串中的一段字符串。1、新建php程序,定义一个变量,然后将一段字符串赋值给这个变量并将值输出:2、使用str_replace函数,函数的第一个参数为需要去掉的字符串,第二个参数为空字符串,第三个参数为原字符串:3、将处理好的函数返回给原来的变量,然后将变量输出,这时php中指定的字符串就被去除了:

2024-08-24 17:30:46
php中替换字符串函数strtr()和str_repalce()的(php中利用explode函数分割字符串到数组)
php中替换字符串函数strtr()和str_repalce()的(php中利用explode函数分割字符串到数组)

php中替换字符串函数strtr()和str_repalce()的在PHP中,strtr()和str_replace()是两种常用的字符串替换函数,它们各有特点。strtr()函数主要用于快速替换,但需要注意区分大小写和特殊替换规则,如不能替换为空字符串。虽然str_replace()的使用更直观,但strtr的速度更快。以下是对这两个函数的直观应用介绍:1.strtr(string,

2024-12-30 06:57:50
php如何替换字符串中的指定字符
php如何替换字符串中的指定字符

php中替换字符串函数strtr()和str_repalce()的在PHP中,strtr()和str_replace()是两种常用的字符串替换函数,它们各有特点。strtr()函数主要用于快速替换,但需要注意区分大小写和特殊替换规则,如不能替换为空字符串。虽然str_replace()的使用更直观,但strtr的速度更快。以下是对这两个函数的直观应用介绍:1.strtr(string,

2024-12-26 03:05:14