php函数来查找其中一个多字节字符的位置
php中是否有一个标准函数可以返回一个多字节符号第一次出现的位置 总的来说,任务如下。我有多字节字符串和这个字符串中的位置,我需要找到其中一个符号(分隔符)的第一个匹配项。我编写了以下函数,但不幸的是,它的速度非常慢php函数来查找其中一个多字节字符的位置,php,multibyte,Php,Multibyte,php中是否有一个标准函数可以返回一个多字节符号第一次出现的位置 总的来说,任务如下。我有多字节字符串和这个字符串中的位置,我需要找到其中一个符号(分隔符)的第一个匹配项。我编写了以下函数,但不幸的是,它的速度非常慢 $delimiters = array( "\r", "\n", "\t", ".", ";", "!", "?" ); function get_cit_end($str, $end) { global $delimiters; if( $end &g
$delimiters = array(
"\r", "\n", "\t", ".", ";", "!", "?"
);
function get_cit_end($str, $end) {
global $delimiters;
if( $end >= mb_strlen($str) )
return mb_strlen($str) - 1;
$c = mb_substr($str, $end, 1);
while( $end < mb_strlen($str) ) {
if( in_array($c, $delimiters) )
break;
$end++;
$c = mb_substr($str, $end, 1);
}
return $end;
}
$delimiters=数组(
“\r”、“\n”、“\t”、“;”、“!”、“?”
);
函数get\u cit\u end($str,$end){
全局$分隔符;
如果($end>=mb_strlen($str))
返回mb_strlen($str)-1;
$c=mb_substr($str,$end,1);
而($end
我会这样使用:
function get_cit_end($str, $delimeters) {
$index = -1;
foreach( $delimiters as $d) {
if( ($i = mb_strpos( $str, $d)) !== false) {
$index = $i;
break;
}
}
if( $index == -1) return mb_strlen( $str) - 1;
return $index;
}
如果启用
mbstring
函数重载,则可以对多字节字符串使用正常的strps()
函数:
应通过php.ini或vhost配置设置以下mbstring变量;它们不会在每个目录下工作(即通过.htaccess)
- mbstring.language=中性
- mbstring.internal_encoding=UTF-8
- mbstring.func_重载=7