정규식 입니다... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

정규식 입니다... 정보

정규식 입니다...

본문

&sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90&page=0

그누보드의
&sca= ... & 사이에 있는 값을 바꾸고 싶어요.

예상하는 행태는 4가지 입니다.

&sca=...
&sca=...&
?sca=...
?sca=...&

클럽2 utf-8 삭제에서 문제가 생겨서, 도와주세욤~! ㅠ..ㅠ...

댓글 전체

이걸 말하는 건지 모르겟네요

<?php

$str = '&sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90&page=0';

//&sca=...
$case1 = preg_replace("`&sca=([^&]+)&.+$`", '&sca=\1', $str);

echo $case1 . '<br />';


//&sca=...&
$case2 = preg_replace("`&sca=([^&]+)&.+$`", '&sca=\1&', $str);

echo $case2 . '<br />';


//?sca=...
$case3 = preg_replace("`&sca=([^&]+)&.+$`", '?sca=\1', $str);

echo $case3 . '<br />';


//?sca=...&
$case4 = preg_replace("`&sca=([^&]+)&.+$`", '?sca=\1&', $str);

echo $case4 . '<br />';


?>
이걸 말하는 건가요?

<?php

$str = '&sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90&page=0';
$replace_str = 'ccccc';

$result = preg_replace("`sca=([^&]+)(&?)`", 'sca=' . $replace_str . '\2', $str);

echo $result . '<br />';

$str = '?sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90&page=0';
$replace_str = 'ccccc';

$result = preg_replace("`sca=([^&]+)(&?)`", 'sca=' . $replace_str . '\2', $str);

echo $result . '<br />';

$str = '&sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90';
$replace_str = 'ccccc';

$result = preg_replace("`sca=([^&]+)(&?)`", 'sca=' . $replace_str . '\2', $str);

echo $result . '<br />';

$str = '?sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90';
$replace_str = 'ccccc';

$result = preg_replace("`sca=([^&]+)(&?)`", 'sca=' . $replace_str . '\2', $str);

echo $result . '<br />';

?>
^_____________________________________________________^...

그런데, $str에서 $replace_str  ... 에 해당하는 값을 찾으려면 어떻게 하죠???
$replace_str에 해당하는 값을 찾아서, 그것을 urldecode해서 바꾸려고 하는 것이라서요.

1. $str에서 $replace_str에 해당하는 값을 찾는다
2. $replace_str= urldecode($replace_str);
3. $result = preg_replace("`sca=([^&]+)(&?)`", 'sca=' . $replace_str . '\2', $str);

날잡아서 한달쯤 정규식 공부 해야할까봐요. ㅠ..ㅠ...
그 부분을 urldecode 하는 것이 목적이라면

<?php

$str = '&sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90&page=0';

echo urldecode($str) . '<br />';

$result = preg_replace("`sca=([^&]+)(&?)`e", "'sca=' . urldecode('\\1') . '\\2'", $str);

echo $result . '<br /><br />';



$str = '?sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90&page=0';

echo urldecode($str) . '<br />';

$result = preg_replace("`sca=([^&]+)(&?)`e", "'sca=' . urldecode('\\1') . '\\2'", $str);

echo $result . '<br /><br />';



$str = '&sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90';

echo urldecode($str) . '<br />';

$result = preg_replace("`sca=([^&]+)(&?)`e", "'sca=' . urldecode('\\1') . '\\2'", $str);

echo $result . '<br /><br />';



$str = '?sca=%5C%EC%9E%90%5C%EC%9C%A0%EA%B2%8C%5C%EC%8B%9C%5C%ED%8C%90';

echo urldecode($str) . '<br />';

$result = preg_replace("`sca=([^&]+)(&?)`e", "'sca=' . urldecode('\\1') . '\\2'", $str);

echo $result . '<br /><br />';

?>

이렇게 하시면 됩니다.
학...이렇게 한줄로 되는거에요? 넘 감사드립니다. ㅠ.ㅠ....

그누보드에 $sca가 들어갔다 나올때, utf-8에서는 encode 때문에 문제가 되더라구요.
그래서, 굳이 풀어버리는게 필요해서요.
$result = preg_replace("`sca=([^&]+)(&?)`e", "'sca=' . str_replace('\\','', urldecode('\\1')) . '\\2'", $qstr);

이렇게 \\1의 결과에 str_replace까지 하려구 했더니, 안되네요. ㅠ..ㅠ...
$result = preg_replace("`sca=([^&]+)(&?)`e", "'sca=' . str_replace(\"\\\\\\\", \"\", urldecode('\\1')) . '\\2'", $qstr);

유창화님이 최종으로 알려주신 것 입니다. 잘 되요.
전체 202 |RSS
그누4 질문답변 내용 검색

회원로그인

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