可以使用正则表达式来匹配中文字符,然后再截取中文字符之前的部分。

示例代码:

$str = 'Hello, world! 你好';

// 匹配中文字符
preg_match('/[\x{4e00}-\x{9fa5}]+/u', $str, $matches);

if (!empty($matches)) {
  // 中文字符的起始位置
  $start = strpos($str, $matches[0]);

  // 截取中文字符之前的部分
  $result = substr($str, 0, $start);
} else {
  // 字符串中不包含中文字符
  $result = $str;
}

echo $result; // 输出:Hello, world! 

解释:

首先使用正则表达式 /[\x{4e00}-\x{9fa5}]+/u 匹配中文字符,其中 \x{4e00}-\x{9fa5} 表示 Unicode 编码范围内的中文字符。如果匹配到了中文字符,则获取第一个匹配结果的起始位置,然后使用 substr() 函数截取中文字符之前的部分。如果没有匹配到中文字符,则直接返回原字符串

PHP 获取某个字符串中中文之前的字符。该字符串可能不包含中文

原文地址: https://www.cveoy.top/t/topic/eO6W 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录