특정 문자열 제거?

특정 문자열 제거?

QA

특정 문자열 제거?

답변 2

본문

$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
© SIRSOFT
현재 페이지 제일 처음으로