PHP学习:字符串操作和正则表达式
主要内容:
- 字符串格式化;
- 用字符串函数连接和分隔字符串;
- 字符串比较;
- 使用字符串函数匹配和替换子字符串;
- 使用正则表达式;
字符串格式化
1,去空格:trim(),ltrim(),rtrim()
trim()函数去掉头尾两边的空格。
ltrim()函数去掉开始的空格。
rtrim()函数去掉结尾的空格。
2,格式化字符串:printf(),sprintf()
printf()函数和sprintf()函数,和echo的功能相同,都会打印字符串。但是它们可以实现更复杂的格式(象C#中string.Format()类似)。
printf()和sprintf()原型如下:
string sprintf(string format[,mixed args..]); void printf(string format[,mixed args...]);로그인 후 복사sprintf()返回格式化后的字符串。而printf直接将结果输出。它们两个的功能类似,所以就已printf()为例。
$boy = "boy"; echo "i am a $boy"; echo '<br />'; printf("i am a %s",$boy);로그인 후 복사上面输出的结果一样。
其中format中的类型可以有以下几种:
format中的所有转换类型都以%开始。如果想打印一个“%”符号,必须使用两个“%%”
3,改变字符串中的字符大小写
a).将字符转换为大写:strtoupper()
$str = "i am a boy"; echo strtoupper($str);로그인 후 복사b).将字符转换为小写 :strtolower()
$str = "I Am A Boy"; echo strtolower($str);로그인 후 복사c).如果第一个字符是字母,就转换成大写:ucfirst()
$str = "i am a boy"; echo ucfirst($str);로그인 후 복사d).将字符串中每个单词的第一个字母转成大写:ucwords()
$str = "i am a boy"; echo ucwords($str);로그인 후 복사4,转义字符串
addslashes()函数就是把“转换成\”,或者把\转成双斜杠\\等等之类的操作。
$str = '"i am a [\] boy."'; echo addslashes($str);로그인 후 복사输出:\"i am a [\\] boy.\"
addslashes()函数相反的函数就是stripslashes()。
5,编码字符串
htmlspecialchars()函数把&,<,>,“等等,编码成浏览器不能解释的字符。
用字符串函数连接和分隔字符串
1,分隔字符串:explode()
它的原型如下:
array explode(string separator,string input[,int limit]);로그인 후 복사可以看出返回数组。使用如下:
$str = "1,2,3,4,5"; $arr = explode(',',$str); foreach($arr as $v){ echo $v.'<br />'; }로그인 후 복사返回1 2 3 4 5
既然有分隔就会有整合。不错,implode()和join()函数实现就是和explode()相反的操作。
$str = "1,2,3,4,5"; $arr = explode(',',$str); echo implode(',',$arr);로그인 후 복사2,截取字符串:substr()
substr()函数的原型如下:
string substr(string input,int start[,int length]);로그인 후 복사第二个参数表示截取的开始位置。
第三个参数表示截取的长度。
使用如下:
$str = "i am a boy"; echo substr($str,2);로그인 후 복사输出:am a boy
需要注意的是,第二个参数和第三个参数可以为负,如果为负,就意味着从后边开始。
function reverse_i($str){ for($i=1;$i<=strlen($str);$i++){ echo substr($str,-$i,1); } return; } reverse_i('word');로그인 후 복사返回:drow;
字符串比较
1,字符串排序:strcmp(),strcasecmp(),strnatcmp()
strcmp()的原型如下:
int strcmp(string str1,string str2);로그인 후 복사如果两个字符串相等,返回0;如果按字典顺序str1在str2后面就返回一个正数,反之。这个函数是区分大小写的。
$str1 = "2"; $str2 = "12"; echo strcmp($str1,$str2);로그인 후 복사返回1,说明它是按字典顺序排列的,$str1的第一个字符大于$str2的第一个字符。
strcasecmp()函数除了不区分大小写之外,其他和strcmp()函数一样。
而strnatcmp()则是按照人们习惯的顺序进行排序。它也不区分大小写。
$str1 = "2"; $str2 = "12"; echo strnatcmp($str1,$str2);로그인 후 복사返回-1,说明12比2大。
2,获得字符串的长度:strlen()
strlen(“hello”),输出结果为5。
使用字符串函数匹配和替换子字符串
1,在字符串中查找字符串:strstr(),strchr(),strrchr()和strissr()
这些函数看起来张得差不多,真是难记啊!~~
最常用的是strstr()函数,strchr()函数和strstr()函数时一样的,虽然感觉strchr()是查找一个字符的意思。
strstr()函数的原型如下:
string strstr(string haystack,string needle);로그인 후 복사第一个参数为整个字符串。로그인 후 복사第二个参数为需要查找的子字符串。
如果找到一个匹配,函数会从needle前面返回haystack,否则返回false。如果存在不止一个needle,返回的字符串从出现第一个needle的位置开始。
a).一个精确匹配
$str1 = "To all, I am very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward."; echo strstr($str1,'very');로그인 후 복사输出:very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.
b).多个匹配
$str1 = "To all, I am very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward"; echo strstr($str1,'been');로그인 후 복사输出:been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.
函数strstr()有两个变体。第一个是stristr()函数,它几乎和strstr()函数一样,但区别就是不区分大小写。
第二个是strrchr()函数,它几乎和strstr()一样,但会从最后出现needle的位置的前面返回字符串haystack。
此函数第二个参数为字符。
输出:ward.$str1 = "To all, I am very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward."; echo strrchr($str1,'w');로그인 후 복사2,查找字符串的位置:strpos(),strrpos()
strpos()函数和strstr()函数的操作类似。但它不是返回一个字符串,而是返回子字符串在整个字符串中的位置。我们平常使用的也是这个。而且比strstr()速度也快。
strpos()函数原型如下:
int strpos(string haystack,string needle,int offset);로그인 후 복사第三个参数是可选的,标示开始搜索的位置。
$str1 = "hello word"; echo strpos($str1,'o');로그인 후 복사输出:4,位置是从0开始起。也可以用子字符串,这里只是出于演示目的。
$str1 = "hello word"; echo strpos($str1,'o',5);로그인 후 복사输出:7。是从位置5开始搜索,也就看不到位置4的那个“o”了。
函数strrpos()也几乎一样,但返回的是子字符串在整个字符串中最后一次出现的位置。
$str1 = "hello word"; echo strrpos($str1,'o');로그인 후 복사输出:7。说明“o”在hello word中最后一个位置的7。
这里需要注意一下,PHP中的false等于0,如果strpos()或者strrpos()都返回false(没有找到)或者在第一个字符就找到了(第一个字符的起始位置是0),
那么就区分不出来是找到,还是未找到了。那怎么办呢?只能用“===”恒等式来避免这个问题了。
$str1 = "hello word"; $position = strrpos($str1,'h'); //第一个字符就找到了,$position ==0 if($position === false){ echo '没有找到'; }else{ echo $position; }로그인 후 복사3,替换子字符串:str_replace(),substr_replace()
str_replace()函数的原型如下:
mixed str_replace(mixed needle,mixed new_needle,mixed haystack[,int &count]);로그인 후 복사第三个参数是可选的。它包含了要执行的替换操作次数。
返回替换过的字符串。
$str1 = "hello word"; echo str_replace('word','china',$str1);로그인 후 복사输出:hello china
函数substr_replace()则用来在给定位置中查找和替换字符串中特定的子字符串。原型如下:
string substr_replace(string string,string replacement,int start[,int length]);로그인 후 복사这个函数使用字符串replacement替换整个字符串string中的一部分。具体是那一部分则取决于起始位置和可选参数length的值。
需要注意的是,start的值如果是0或者一个正值,就是从字符串开始计算偏移量;如果是一个负值,就从字符串末尾开始的一个偏移量。
使用正则表达式
1,查找子字符串:ereg(),eregi()
ereg()函数的原型如下:
int ereg(string pattern,string search,array [matches]);로그인 후 복사在search字符串中查找正则为pattern的表达式,如果发现了与pattern的字表达式相匹配的字符串,这些字符串将会存储在数组matches中,每个数组元素对应一个子表达式。
函数eregi()函数除了不区分大小写外,其功能与ereg()一样。
$str1 = "xxx@gmail.com.cn"; if(!eregi('[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}',$str1)){ echo '不是正确的Email'; }else{ echo '正确'; }로그인 후 복사2,替换子字符串:ereg_replace(),eregi_replace()
于str_replace()函数一样,只不过这两个使用正则表达式当做参数。
ereg_replace()的原型如下:
string ereg_replace(string pattern,string replacement,string search);로그인 후 복사$str1 = "123123@gmail.com.cn"; echo ereg_replace('[A-Z0-9._%+-]+@','**@',$str1);로그인 후 복사输出:**@gmail.com.cn
函数eregi_replace除了不区分大小写外,其他与ereg_replace()相同。
3,分隔字符串:split()
函数split()的原型如下:
array split(string pattern,string search[,int max]);로그인 후 복사第三个参数为可选,表示进入数组中的元素个数。
返回值是数组。
$str1 = "123123@gmail.com.cn"; $arr = split('\.|@',$str1); while(list($key,$value) = each($arr)){ echo '<br />'.$key.'--'.$value; }로그인 후 복사输出:
0--123123
1--gmail
2--com
3--cn
split()函数和explode()函数有点相似,前者是用正则表达式当做分隔符,后者是用字符串当做分隔符。
参考:PHP与MySQL.WEB开发

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











24일 이 사이트의 소식에 따르면 지난 6월 21일 HDC2024 화웨이 개발자 컨퍼런스 기조연설에서 화웨이 터미널 BG 소프트웨어 부문 사장 공티(Gong Ti)가 화웨이가 자체 개발한 창힐(Cangjie) 프로그래밍 언어를 공식 발표했다. 이 언어는 5년 동안 개발되었으며 이제 개발자 미리보기로 제공됩니다. Huawei의 공식 개발자 웹사이트는 이제 개발자가 프로그래밍 언어를 시작하고 이해할 수 있도록 Cangjie 프로그래밍 언어에 대한 공식 소개 튜토리얼 비디오를 출시했습니다. 이 튜토리얼에서는 사용자가 Cangjie를 경험하고, Cangjie를 배우고, Cangjie를 적용하는 방법을 안내합니다. 여기에는 Cangjie 언어를 사용하여 파이를 추정하고, 2024년 각 달의 줄기 및 가지 규칙을 계산하고, Cangjie 언어로 이진 트리를 표현하는 N 방법을 확인하고, 열거형을 사용하는 방법이 포함됩니다. 대수 계산을 구현하기 위한 유형, 인터페이스 및 확장을 사용한 신호 시스템 시뮬레이션, Cangjie 매크로를 사용한 새로운 구문 등이 있습니다. 이 사이트에는 튜토리얼 액세스 주소가 있습니다: ht

이 사이트는 오늘 오후 HDC2024 화웨이 개발자 컨퍼런스에서 화웨이 터미널 BG 소프트웨어 부서 사장 Gong Ti가 화웨이가 자체 개발한 Cangjie 프로그래밍 언어를 공식 발표하고 HarmonyOSNEXT Cangjie 언어의 개발자 프리뷰 버전을 출시했다고 6월 21일 보도했습니다. 화웨이가 Cangjie 프로그래밍 언어를 공개적으로 출시한 것은 이번이 처음입니다. Gong Ti는 "2019년에 Cangjie 프로그래밍 언어 프로젝트가 Huawei에서 탄생했습니다. 5년간의 R&D 축적과 막대한 R&D 투자 끝에 마침내 오늘 글로벌 개발자를 만났습니다. Cangjie 프로그래밍 언어는 현대적인 언어 기능, 포괄적인 컴파일 최적화 및 런타임 구현을 통합합니다. 즉시 사용 가능한 IDE 도구 체인 지원은 개발자에게 친숙한 개발 경험과 뛰어난 프로그램 성능을 제공합니다. "보고서에 따르면 Cangjie 프로그래밍 언어는 모든 시나리오 인텔리전스 도구입니다.

6월 21일 이 사이트의 소식에 따르면 화웨이가 자체 개발한 창힐(Cangjie) 프로그래밍 언어가 오늘 공식적으로 공개됐고, 공식적으로는 하모니OSNEXT 창힐(HarmonyOSNEXT Cangjie) 언어 개발자 프리뷰 베타 모집 개시를 발표했다. 이 업그레이드는 개발자가 Cangjie 언어를 사용하여 HarmonyOSNext 애플리케이션을 개발, 디버깅 및 실행할 수 있도록 Cangjie 언어 SDK, 개발자 가이드 및 관련 DevEcoStudio 플러그인을 제공하는 개발자 미리 보기 버전에 대한 얼리 어답터 업그레이드입니다. 등록 기간: 2024년 6월 21일 - 2024년 10월 21일 신청 요구 사항: 이번 HarmonyOSNEXT Cangjie 언어 개발자 미리 보기 베타 모집 이벤트는 다음 개발자에게만 공개됩니다. 1) Huawei 개발자 연합 인증에 실명이 입력되었습니다. 2) H를 완료하세요.

6월 22일 이 사이트의 뉴스에 따르면 화웨이는 어제 화웨이가 자체 개발한 프로그래밍 언어인 창힐(Cangjie)을 전 세계 개발자들에게 선보였습니다. 이는 Cangjie 프로그래밍 언어가 최초로 공개된 것입니다. 이 사이트의 문의에 따르면 천진대학교와 베이징 항공우주대학교는 화웨이의 '창힐' 연구 개발에 깊이 관여한 것으로 나타났습니다. 천진대학교: Cangjie 프로그래밍 언어 컴파일러 천진대학교 지능컴퓨팅학과의 소프트웨어 엔지니어링 팀은 Huawei Cangjie 팀과 협력하여 Cangjie 프로그래밍 언어 컴파일러의 품질 보증 연구에 깊이 참여했습니다. 보고서에 따르면 Cangjie 컴파일러는 Cangjie 프로그래밍 언어와 공생하는 기본 소프트웨어입니다. Cangjie 프로그래밍 언어의 준비 단계에서는 이에 맞는 고품질 컴파일러가 핵심 목표 중 하나가 되었습니다. Cangjie 프로그래밍 언어가 발전함에 따라 Cangjie 컴파일러는 지속적으로 업그레이드되고 개선되고 있습니다. 지난 5년간 천진대학교

HDC2024 화웨이 개발자 컨퍼런스 전인 6월 21일 이 사이트의 소식에 따르면 화웨이가 자체 개발한 창힐(Cangjie) 프로그래밍 언어가 공식 공개됐고 창힐 공식 웹사이트가 현재 온라인 상태다. 공식 웹사이트 소개에 따르면 Cangjie 프로그래밍 언어는 "기본 지능, 자연스러운 모든 시나리오, 고성능 및 강력한 보안"에 중점을 둔 모든 시나리오 지능을 위한 차세대 프로그래밍 언어입니다. Hongmeng 생태계에 통합하여 개발자에게 좋은 프로그래밍 경험을 제공하세요. 본 사이트에 첨부된 공식 홈페이지에는 AgentDSL이 내장된 네이티브 지능형 프로그래밍 프레임워크, 자연어 및 프로그래밍 언어의 유기적 통합, 단순화된 기호 표현, 자유로운 패턴 조합, 다양한 지능형 애플리케이션 개발 지원 등이 소개되어 있습니다. 모든 장면에 대한 본질적으로 가볍고 확장 가능한 런타임, 모듈식 계층 설계, 메모리가 아무리 작더라도 모든 시나리오 도메인 확장을 수용할 수 있습니다.

6월 21일 뉴스에 따르면 오늘 오후 화웨이 개발자 컨퍼런스 2024가 공식적으로 개최될 예정입니다. 앞서 유청동이 공개한 계획에 따르면 '순혈 홍몽' 하모니 OS NEXT는 오늘 오후 공식 베타 버전이 발표될 예정이며, 일반 소비자도 '순혈 하모니'를 시험해 볼 수 있다. 보도에 따르면 지원되는 첫 번째 휴대폰은 Mate60 시리즈와 Pura70 시리즈입니다. "순수한 Hongmeng"인 HarmonyOSNEXT가 기존 Linux 커널과 AOSP Android 오픈 소스 코드를 제거하고 전체 스택을 자체적으로 개발했다는 점은 주목할 가치가 있습니다. Sina Technology의 최신 보고서에 따르면 Huawei는 Hongmeng 생태계의 마지막 링크도 완성하고 세계에서 입지를 확장할 예정입니다.

2023년 3월 14일 ChatGLM-6B가 출시된 이후 GLM 시리즈 모델은 광범위한 관심과 인정을 받았습니다. 특히 ChatGLM3-6B가 오픈소스로 공개된 이후 개발자들은 Zhipu AI가 출시하는 4세대 모델에 대한 기대감이 가득합니다. 이러한 기대는 마침내 GLM-4-9B의 출시로 완전히 충족되었습니다. GLM-4-9B의 탄생 소형 모델(10B 이하)에 더욱 강력한 기능을 제공하기 위해 GLM 기술팀은 약 반년 만에 새로운 4세대 GLM 시리즈 오픈 소스 모델인 GLM-4-9B를 출시했습니다. 탐구. 이 모델은 정확성을 보장하면서 모델 크기를 크게 압축하고 추론 속도가 더 빠르고 효율성이 높습니다. GLM 기술팀의 탐색은 아직 이루어지지 않았습니다.

6월 21일 이 사이트의 소식에 따르면 화웨이가 자체 개발한 Cangjie 프로그래밍 언어가 오늘 공식적으로 공개되었으며 HarmonyOSNEXT Cangjie 언어 개발자 프리뷰 버전의 베타 모집이 시작되었습니다. Huawei 공식 웹사이트의 Cangjie 프로그래밍 언어 Q&A 페이지에서는 Cangjie 프로그래밍 언어가 모든 시나리오 지능을 지향하는 차세대 애플리케이션 프로그래밍 언어이며 기본 지능, 자연스러운 모든 시나리오, 고성능 및 강력한 보안이 결합되어 있음을 보여줍니다. Hongmeng 시스템을 사용하면 좋은 프로그래밍 경험을 제공할 수 있습니다. 다양한 비즈니스 시나리오를 위해 Hongmeng Ecosystem은 애플리케이션 개발자에게 Cangjie 및 ArkTS와 같은 다국어 하이브리드 개발 기능을 제공합니다. Cangjie와 ArkTS는 함께 발전하고 Hongmeng 생태계에서 상호 보완적인 이점을 형성합니다. Cangjie는 고성능 및 높은 동시성 요구 사항이 있는 비즈니스 시나리오에 더 적합합니다. Cangjie 프로그래밍 언어의 목표는 동시에 작업을 수행하는 Hongmeng 애플리케이션을 만드는 것입니다.
