특정 문자열 제거?

특정 문자열 제거?

QA

특정 문자열 제거?

본문

$str= '{100000|2.0T×1m×5m|100000|2.0T×1m×10m|200000|2.0T×1m×20m|400000|2.0T×1m×25m|500000 }'

 

라고 가정시  |400000| 처럼 이 "  |숫자| "   이부분 
 | | 사이의 숫자만 지울수있을까요?

이 질문에 댓글 쓰기 :

답변 2


<?php
$str= '{100000|2.0T×1m×5m|100000|2.0T×1m×10m|200000|2.0T×1m×20m|400000|2.0T×1m×25m|500000 }';
echo preg_replace('/([\|\{\s])[0-9]+([\|\}\s])/', '$1$2', $str);

([\|\{\s]) 이게 replacement의 $1
([\|\}\s]) 이게 replacement의 $2
사이에 있는 하나 이상의 숫자 [0-9]+

[] 정규식에서 문자열 집합이요
숫자의 앞에 | { 공백
숫자의 뒤에 | } 공백

그런데 | { } 이 문자는 정규식에서 사용하는 특수문자이므로
백슬러시로 이스케이프 \| \{ \}
공백은 \s space의 줄임말입니다

저기에 걸리는 문자는
|숫자|
{숫자|
|숫자}
{숫자}
(공백)숫자(공백)
... 너무 많아서 생략

정규식을 사용한다는 건
input 문자열에 특정한 패턴이 있다는 것입니다
모든 상황을 전부 cover 해야 한다면 정규식으로 할 수 없겠죠
여기서 핵심 패턴은 |숫자| 인데요
적어주신 예제 $str 의 패턴을 보고 { } 도 있고 끝에 공백 } 이것도 있어서
공백과 {} 문자도 앞뒤로 넣어준것입니다

'|' 없애려면


$str= '{100000|2.0T×1m×5m|100000|2.0T×1m×10m|200000|2.0T×1m×20m|400000|2.0T×1m×25m|500000 }';

echo str_replace('|', '', $str);

'|'사이의 값들을 배열로 담으려면

 

$str= '{100000|2.0T×1m×5m|100000|2.0T×1m×10m|200000|2.0T×1m×20m|400000|2.0T×1m×25m|500000 }';
$temp_arr = explode('|', $str);
echo $temp_arr[0];

echo $temp_arr[1];

...

답변을 작성하시기 전에 로그인 해주세요.
전체 3

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT