可以使用正则表达式来匹配第一次出现中文之前的文本。具体操作如下:

$str = "this is 中文abc dfddf-12 文本d sf";

// 匹配第一次出现中文之前的所有字符
preg_match('/^([\x00-\x7f]+).*[\x80-\xff]/', $str, $matches);

// 输出匹配结果
echo $matches[1]; // 输出:this is 

解释一下正则表达式的含义:

  • /^([\x00-\x7f]+):以字符串开头开始匹配,匹配任意 ASCII 字符(0x00 ~ 0x7f),并且匹配至少一个字符,使用括号将匹配结果分组
  • .*:匹配任意字符,0 次或多次
  • [\x80-\xff]:匹配任意中文字符(0x80 ~ 0xff)

因此,该正则表达式可以匹配第一次出现中文之前的所有字符。在上述代码中,使用 preg_match() 函数进行匹配,匹配结果存储在 $matches 数组中,其中 $matches[1] 就是匹配到的第一个子组,即第一次出现中文之前的文本。最后,使用 echo 输出匹配结果即可

PHP 将以下字符串取出第一次出现中文之前的文本 this is 中文abc dfddf-12 文本d sf

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

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