字符串操作

PHP 字符串截取

mb_substr

mb_substr() 函数返回字符串的一部分,之前我们学过 substr() 函数,它只针对英文字符,如果要分割的中文文字则需要使用 mb_substr()。

注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

mb_substr($s,0,80,'utf-8');

参数描述
str 必需。从该 string 中提取子字符串。
start 必需。规定在字符串的何处开始。
  • 正数 - 在字符串的指定位置开始
  • 负数 - 在从字符串结尾的指定位置开始
  • 0 - 在字符串中的第一个字符处开始
length 可选。规定要返回的字符串长度。默认是直到字符串的结尾。
  • 正数 - 从 start 参数所在的位置返回
  • 负数 - 从字符串末端返回
encoding 可选。字符编码。如果省略,则使用内部字符编码。

substr

substr() 函数返回字符串的一部分。

注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

substr("Hello world",6,2);
参数描述
string 必需。规定要返回其中一部分的字符串。
start 必需。规定在字符串的何处开始。
  • 正数 - 在字符串的指定位置开始
  • 负数 - 在从字符串结尾的指定位置开始
  • 0 - 在字符串中的第一个字符处开始
length 可选。规定要返回的字符串长度。默认是直到字符串的结尾。
  • 正数 - 从 start 参数所在的位置返回
  • 负数 - 从字符串末端返回


strstr

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。
参数描述
string 必需。规定被搜索的字符串。
search
必需。规定所搜索的字符串。
如果此参数是数字,则搜索匹配此数字对应的 ASCII 值的字符。
before_search
可选。默认值为 "false" 的布尔值。
如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分。

preg_match_all

 

参数描述
pattern 要搜索的模式,字符串形式。
subject 输入字符串。
matches 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。


flags

可以结合下面标记使用(注意不能同时使用PREG_PATTERN_ORDER和 PREG_SET_ORDER):

  1. PREG_PATTERN_ORDER: 结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。

  2. PREG_SET_ORDER: 结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。

  3. PREG_OFFSET_CAPTURE: 如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。

offset 通常, 查找时从目标字符串的开始位置开始。可选参数offset用于 从目标字符串中指定位置开始搜索(单位是字节)。
   
<?php  
$userinfo = "Name: <b>PHP</b> <br> Title: <b>Programming Language</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $userinfo, $pat_array);
print_r($pat_array[0]);
?>
 

php 截取字符串中 中文部分

preg_match_all("/[\x{4e00}-\x{9fa5}]+/u","ss中文s",$regs);//preg_match_all(“正则表达式”,"截取的字符串","成功之后返回的结果集(是数组)")
print_r($regs);
$s = join('',$regs[0]);//join("可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。","要组合为字符串的数组。")把数组元素组合为一个字符串
$s=mb_substr($s,0,80,'utf-8');//mb_substr用于字符串截取,可以防止中文乱码的情况
return $s;

 

MYSQL 截取字符串

substring_index(input,split,index):input为要截取的字符,split为分隔符,Index为要截取第index个分隔符左(index为正)或右(index为负)的字符串。

-- 1-获取finalScore右边的字符
select substring_index('Provider="RiskManagement" finalScore="65" RGID="100397278"','finalScore="',-1);

-- 2-再获取" RGID="左边的字符
select substring_index(substring_index('Provider="RiskManagement" finalScore="65" RGID="100397278"','finalScore="',-1),'" RGID="',1);

 

$str = "ssa@ksss";
return substr(strstr($str, '@'), 1);

 

posted @ 2023-02-27 16:34  给香菜送点香菜  阅读(15)  评论(0)    收藏  举报