정규표현식 어디가 잘못 되었을까요?

정규표현식 어디가 잘못 되었을까요?

QA

정규표현식 어디가 잘못 되었을까요?

본문

$list[$idx][$i]['href'] 상태

https://homzzang.com/bbs/board.php?bo_table=free&wr_id=312

 

 

$list[$idx][$i]['href'] = preg_replace( "/\/bbs\/board\.php\?bo_table=/" , '/', $list[$idx][$i]['href'] ); 상태

https://homzzang.com/free&wr_id=312

 

$list[$idx][$i]['href'] = preg_replace( "/\&wr_id=/" , '/', $list[$idx][$i]['href'] ); 상태

https://homzzang.com/free&wr_id=312
 

 

저 갈색 코드가 이상한지 아래처럼 표현이 안 되는데,

https://homzzang.com/free/312 처럼 표현하려면 ?
 

 

 

이 질문에 댓글 쓰기 :

답변 3

url은 정규표현식보다 파싱함수를 쓰는 것이 더 정확하고 편리합니다.

 


$url = 'https://homzzang.com/bbs/board.php?bo_table=free&wr_id=312';
$array = parse_url($url);
parse_str($array['query'], $param);
echo "{$array['scheme']}://{$array['host']}/{$param['bo_table']}/{$param['wr_id']}";
// https://homzzang.com/free/312

 

http://php.net/manual/en/function.parse-url.php

http://php.net/manual/en/function.parse-str.php

덕분에 잘 해결했습니다.  주말 잘 보내세요. ^^

PS.
php7.2.10에선 아래처럼 해야 출력이 되네요.

$array = parse_url($list[$idx][$i]['href']);
//print_r2($array);
$param = array();
parse_str($array['query'], $param);
//print_r2($param);
$list[$idx][$i]['href'] = "{$array['scheme']}://{$array['host']}/{$param['bo_table']}/{$param['amp;wr_id']}";
// https://homzzang.com/free/312

preg_replace('/\&wr_id\=/', '/', $list[$idx][$i]['href']);

 

https://www.phpliveregex.com/#tab-preg-replace

오옹 파싱하시남유!! arrey 결과값을 보면서 하나씩 해야 ㅠ_ㅠ 크흡 고통임

답변을 작성하시기 전에 로그인 해주세요.
전체 123,534 | RSS
QA 내용 검색

회원로그인

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