답변 2개 / 댓글 6개
채택된 답변
+20 포인트
Copy
<?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);
답변에 대한 댓글 6개
([\|\{\s]) 이게 replacement의 $1
([\|\}\s]) 이게 replacement의 $2
사이에 있는 하나 이상의 숫자 [0-9]+
[] 정규식에서 문자열 집합이요
숫자의 앞에 | { 공백
숫자의 뒤에 | } 공백
그런데 | { } 이 문자는 정규식에서 사용하는 특수문자이므로
백슬러시로 이스케이프 \| \{ \}
공백은 \s space의 줄임말입니다
저기에 걸리는 문자는
|숫자|
{숫자|
|숫자}
{숫자}
(공백)숫자(공백)
... 너무 많아서 생략
([\|\}\s]) 이게 replacement의 $2
사이에 있는 하나 이상의 숫자 [0-9]+
[] 정규식에서 문자열 집합이요
숫자의 앞에 | { 공백
숫자의 뒤에 | } 공백
그런데 | { } 이 문자는 정규식에서 사용하는 특수문자이므로
백슬러시로 이스케이프 \| \{ \}
공백은 \s space의 줄임말입니다
저기에 걸리는 문자는
|숫자|
{숫자|
|숫자}
{숫자}
(공백)숫자(공백)
... 너무 많아서 생략
'|' 없애려면
$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];
...
답변을 작성하려면 로그인이 필요합니다.