按长度拆分 unicode 字符串 PHP
split unicode string by length PHP
我需要将 Unicode 代码字符串拆分为 70 个字符的数组。因此结果数组中的值将包含 70 个字符长的字符串。以下是我的代码
$msg = preg_replace('/[\r\n]+/', ' ', $smsContent);
$chunks = wordwrap($msg, 70, '\n');
$chunks = explode('\n', $chunks);
//print_r($chunks);
但结果数组包含不同长度的值。
这是一个例子
$smsContent = "सभी मनुष्यों कोगौरव और अधिकारों के मामले में जनजात स्वतंत्रता और समानता प्राप्त है | उन्हें बुद्धि और अन्तरात्मा कि देन प्राप्त है |";
结果:
Array
(
[0] => सभी मनुष्यों कोगौरव और अधि
[1] => कारों के मामले में जनजात स�
[2] => �वतंत्रता और समानता प्राप्
[3] => त है | उन्हें बुद्धि और अन्त
[4] => रात्मा कि देन प्राप्त है |
)
我需要把它拆分成70个字符长的值,但好像不正确。而且我还需要防止单词分裂。
您必须使用 str_split()
功能:
$smsContent = "सभी मनुष्यों कोगौरव और अधिकारों के मामले में जनजात स्वतंत्रता और समानता प्राप्त है | उन्हें बुद्धि और अन्तरात्मा कि देन प्राप्त है |";
$output = str_split($smsContent, 70);
print_r($output);
您不能使用基于字节数的方法,因为您的字符串包含多字节字符并最终包含组合字符。你必须按字形工作。可以使用字符 类 [:graph:]
和 [:print:]
:
preg_match_all('~[[:graph:]][[:print:]]{0,30}(?!\S)~u', $smsContent, $m);
print_r($m[0]);
我需要将 Unicode 代码字符串拆分为 70 个字符的数组。因此结果数组中的值将包含 70 个字符长的字符串。以下是我的代码
$msg = preg_replace('/[\r\n]+/', ' ', $smsContent);
$chunks = wordwrap($msg, 70, '\n');
$chunks = explode('\n', $chunks);
//print_r($chunks);
但结果数组包含不同长度的值。
这是一个例子
$smsContent = "सभी मनुष्यों कोगौरव और अधिकारों के मामले में जनजात स्वतंत्रता और समानता प्राप्त है | उन्हें बुद्धि और अन्तरात्मा कि देन प्राप्त है |";
结果:
Array
(
[0] => सभी मनुष्यों कोगौरव और अधि
[1] => कारों के मामले में जनजात स�
[2] => �वतंत्रता और समानता प्राप्
[3] => त है | उन्हें बुद्धि और अन्त
[4] => रात्मा कि देन प्राप्त है |
)
我需要把它拆分成70个字符长的值,但好像不正确。而且我还需要防止单词分裂。
您必须使用 str_split()
功能:
$smsContent = "सभी मनुष्यों कोगौरव और अधिकारों के मामले में जनजात स्वतंत्रता और समानता प्राप्त है | उन्हें बुद्धि और अन्तरात्मा कि देन प्राप्त है |";
$output = str_split($smsContent, 70);
print_r($output);
您不能使用基于字节数的方法,因为您的字符串包含多字节字符并最终包含组合字符。你必须按字形工作。可以使用字符 类 [:graph:]
和 [:print:]
:
preg_match_all('~[[:graph:]][[:print:]]{0,30}(?!\S)~u', $smsContent, $m);
print_r($m[0]);