이전 글 "PHP 문자열 학습: 다른 문자를 제거하고 숫자만 남기는 방법"에서는 for 루프와 in_array() 또는 is_numeric() 함수를 사용하여 문자열에서 숫자를 추출하는 방법을 소개했습니다. 이번에는 PHP 문자열에 대한 연구와 실습을 계속하고 문자열에서 숫자를 추출하는 몇 가지 다른 방법을 소개합니다.
문자열에서 숫자 문자를 추출하는 것은 본질적으로 문자열 필터링 작업입니다. 문자열 필터링을 보다가 "정규표현식"이 생각났습니다.
정규 표현식은 사전 정의된 특정 문자와 이러한 특정 문자의 조합을 사용하여 "규칙 문자열"을 표현하는 데 사용됩니다. 문자열에 대한 필터링 논리.
정규 표현식은 특정 규칙으로 패턴을 구성하고 이를 입력 문자열 정보와 비교한 후 특정 함수에서 이를 사용하여 문자열 일치, 검색, 대체, 분할 등의 작업을 수행합니다.
정규 표현식을 사용하여 문자열을 필터링하고, 문자열에서 숫자만 추출하고, 이러한 숫자로 구성된 하위 문자열을 반환하는 방법을 살펴보겠습니다.
예를 들어, 다음 문자열
$str ='0我是123456一段测试的字789符串0';
을 제공하고 숫자 "01234567890
"로 구성된 하위 문자열을 반환하려고 합니다! 01234567890
”!
方法1、使用preg_replace()函数
分析一下上面的关键代码:
preg_replace("/[^0-9]/", "", $str)
的意思为匹配除了0~9间的数字以外的字符,并将这些字符替换为空字符,即删除这些字符即可。那么就只剩下数字字符了,因此输出结果为:
我们来简单了解一下preg_replace()函数
preg_replace() 函数可以执行正则表达式的搜索和替换,是一个强大的字符串替换处理函数,该它的语法格式为“preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
”,表示搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换;可选参数 limit 用于设置最大可替换次数(默认值是-1,可无限制)。
方法2:使用preg_match_all()函数
分析一下上面的代码:
preg_match_all('/d+/',$str,$array)
的意思为在字符串$str
中多次查找只包含0~9间数字字符的子串,将每次的匹配结果放在一个数组$array
中。我们使用var_dump($array)
来输出这个数组看看:
会发现结果数组$array
是一个二维数组,包含匹配结果的元素是内层的数组。而想要将这些元素拼接成一个字符串,就需要嵌套两层foreach循环:
第一层循环中
foreach($array as $arr){ }
将内层数组作为值赋给$arr
,所以在第二层循环中需要遍历的数组变成了$arr
foreach($arr as $value){ $result .= $value; }
在每次循环中,将数组值赋给变量$value,然后使用“.=
”运算符拼接到字符串$result
中,因此一开始$result
preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])
위의 키 코드를 분석하세요:
preg_replace("/[^0-9]/", "", $str)
는 0~9 사이의 숫자 이외의 문자를 일치시켜 해당 문자를 빈 문자로 대체, 즉 해당 문자를 삭제한다는 의미입니다. 그러면 숫자만 남으므로 출력 결과는 다음과 같습니다.
preg_replace() 함수에 대해 간단히 살펴보겠습니다
preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
"는 패턴과 일치하는 주제 부분을 검색한다는 의미이며, 대체 대체 사용; 선택적 매개변수 제한은 최대 대체 수를 설정하는 데 사용됩니다(기본값은 -1, 무제한). rrreee
위 코드 분석:preg_match_all('/d+/',$str,$array)
는 문자에서 검색을 의미합니다. 0에서 9 사이의 숫자만 포함하는 하위 문자열에 대해 $str
문자열을 여러 번 입력하고 일치하는 각 결과를 $array
배열에 넣습니다. var_dump($array)
를 사용하여 이 배열을 출력하고 다음을 확인하세요.
$array
는 2차원 배열이고 일치하는 결과를 포함하는 요소를 찾을 수 있습니다. 내부 배열입니다. 이러한 요소를 문자열로 연결하려면 두 가지 수준의 foreach 루프를 중첩해야 합니다.
내부 배열을 $에 값으로 할당 arr
이므로 두 번째 루프에서 순회해야 하는 배열은 $arr
🎜🎜🎜🎜rrreee🎜🎜🎜가 됩니다. 각 루프에서 배열 값을 $ 값 변수에 할당하고, 그런 다음 ".=
" 연산자를 사용하여 $result
문자열에 연결하므로 처음에는 $result
가 빈 문자열이어야 합니다. . 🎜🎜🎜🎜🎜출력 결과는 다음과 같습니다. 🎜🎜🎜🎜🎜 preg_match_all() 함수를 간단히 살펴보겠습니다. 🎜🎜preg_match_all() 함수는 문자열에서 정규식과 일치할 수 있는 모든 결과를 검색할 수 있습니다. 전역 정규식 일치를 수행하는 함수입니다. 구문 형식은 🎜rrreee🎜🎜🎜$pattern 정규식 🎜🎜🎜 🎜 $subject 일치 문자열 🎜🎜🎜🎜$matches 모든 일치 결과(배열) 🎜🎜🎜🎜preg_match_all()은 한 번의 일치가 성공한 후 일치를 중지하려면 preg_match() 함수를 사용해야 합니다. 🎜🎜그렇습니다. 더 알고 싶다면 여기를 클릭하세요. → →🎜php 비디오 튜토리얼🎜🎜🎜마지막으로 클래식 강좌인 "🎜PHP 문자열 처리(옥소녀심경편)🎜"을 읽어보시길 추천합니다. 무료입니다~ 와서 배워보세요! 🎜위 내용은 PHP 문자열 학습은 일반 필터를 사용하여 문자를 필터링하고 숫자를 반환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!