채택완료
분류(ca_id)를 정규식 활용해서 10으로 시작하는 분류를 판별하는 방법....
정규식 관련된 글을 찾아보고 적용해보려하는데 도저히 어떻게 판별 하는지 막막해서 질문올려봅니다;;
$it['ca_id'] 를 가지고 분류가 10으로 시작하는지를 판별하려 하는데요..;;
Copy
preg_match("/^\d{10}/", $it['ca_id']);
일단 정규식 관련 글들을 보면서 저기까지 짜봤습니다...ㅠㅠㅠ
정규식은 / 로 시작해서 / 로 끝나야한다....
^ 시작문자를 가리킨다
d 숫자형 문자를 확인한다..
이런식으로 정규식 관련 글을 보면서 짜본건데요;;
저기서 저걸 어떻게 가져다가 10으로 시작하는 경우를 판별해내나요...??
답변 3개 / 댓글 9개
채택된 답변
+20 포인트
2020-06-15 (월) 13:24:23
단순 하게 10문자만 판별하는거라면 substr() 함수가 더 간단할것 같은데요
패턴은 ^10+[0-9] 이게 맞는지는 모르겠네요
Copy
if(substr($it['ca_id'], 0, 2) == '10') {
...
}
답변에 대한 댓글 7개
coDribble
2020-06-15 (월) 13:31:38
2020-06-15 (월) 13:37:30
!== 자료형 까지 비교하기때문에 경우에 따라서 안될수도 있습니다.
!= 처럼 사용하시거나 엄격하게 자료형 비교를 하실꺼라면 형변환을 할수 있게 아래처럼 하셔야될것 같습니다.
[code]
$foo = (int) substr($it['ca_id'], 0, 2);
if( $foo !== 20) {
...
}
[/code]
!= 처럼 사용하시거나 엄격하게 자료형 비교를 하실꺼라면 형변환을 할수 있게 아래처럼 하셔야될것 같습니다.
[code]
$foo = (int) substr($it['ca_id'], 0, 2);
if( $foo !== 20) {
...
}
[/code]
2020-06-15 (월) 13:49:18
get_text() 함수는 왜 사용하시는지는 모르겠지만요
substr() 함수를 사용할경우 반환값 자료형이 string이네요
https://www.php.net/manual/en/function.substr.php
$it['ca_id'] = 20;
if( substr($it['ca_id'], 0, 2) !== '20' ) {
echo 'Yes!';
} else {
echo 'No!';
}
http://sandbox.onlinephpfunctions.com/
substr() 함수를 사용할경우 반환값 자료형이 string이네요
https://www.php.net/manual/en/function.substr.php
$it['ca_id'] = 20;
if( substr($it['ca_id'], 0, 2) !== '20' ) {
echo 'Yes!';
} else {
echo 'No!';
}
http://sandbox.onlinephpfunctions.com/
coDribble
2020-06-15 (월) 13:56:42
get_text 를 썼던 건... 저 함수가 문자열로 인식하게 해주는 줄 알고 썼는데 아닌가 보네요;;
덕분에 substr 만으로도 자료형이 string으로 되는걸 알고갑니다;;ㅠㅠㅠ
근데 중요한건 알려주신대로 해도 왜 안되는걸까요...??ㅠㅠㅠ
/shop/item.php 파일에 있는 pg_anchor 함수 안에서
불러오는 탭을 분류값에 따라 보였다안보였다 하기를 원하는건데;;ㅠㅠ
정작 pg_anchor 함수안에서
echo $it['ca_id']를 찍어보면.. ca_id 값을 불러오질 못하는데...
애초에 ca_id 값을 불러오질 못해서 안먹히는거겠죠...??ㅠㅠㅠ
덕분에 substr 만으로도 자료형이 string으로 되는걸 알고갑니다;;ㅠㅠㅠ
근데 중요한건 알려주신대로 해도 왜 안되는걸까요...??ㅠㅠㅠ
/shop/item.php 파일에 있는 pg_anchor 함수 안에서
불러오는 탭을 분류값에 따라 보였다안보였다 하기를 원하는건데;;ㅠㅠ
정작 pg_anchor 함수안에서
echo $it['ca_id']를 찍어보면.. ca_id 값을 불러오질 못하는데...
애초에 ca_id 값을 불러오질 못해서 안먹히는거겠죠...??ㅠㅠㅠ
coDribble
2020-06-15 (월) 14:06:36
해결이 된듯 합니다...
pg_anchor 함수 안에서 $it['ca_id'] 값을 못불러와서 적용이 안되는거 같아...
혹시나 하는 마음에 global $default 옆에 , $it 을 추가해보니
제대로 적용이 됩니다;;ㅠㅠ
pg_anchor 함수 안에서 $it['ca_id'] 값을 못불러와서 적용이 안되는거 같아...
혹시나 하는 마음에 global $default 옆에 , $it 을 추가해보니
제대로 적용이 됩니다;;ㅠㅠ
2020-06-15 (월) 14:07:11
조건에 맞을경우 보이기/숨김 처리가 필요하신거라면
저라면 ul 에 조건 클래스(cate-off) 만들어서 스타일을 적용할것 같은데요
추신) 해당함수코드를 보니 ul은 코어를 수정해야되네요
ul이 들어가는 상위 블록에 조건 클래스 넣어면 스킨으로도 충분이 처리가능할것 같습니다.
저라면 ul 에 조건 클래스(cate-off) 만들어서 스타일을 적용할것 같은데요
추신) 해당함수코드를 보니 ul은 코어를 수정해야되네요
ul이 들어가는 상위 블록에 조건 클래스 넣어면 스킨으로도 충분이 처리가능할것 같습니다.
coDribble
2020-06-15 (월) 14:32:24
저도 간단한 조건같은 경우는 클래스 추가로 처리하긴 하는데...
개발자가 아니다보니 여기페이지 저기페이지 다 열어가며 php 구문이나 sql 쿼리문들 보면서... 이거 가져다가 값만 변경해보면 될거같은데??싶은 것들을 가져다가 수정하는 정도로만 가능해서요...;;ㅠㅠㅠ
일단 이 정도에서... 만족해야겠네요ㅠㅠㅠㅠ
개발자가 아니다보니 여기페이지 저기페이지 다 열어가며 php 구문이나 sql 쿼리문들 보면서... 이거 가져다가 값만 변경해보면 될거같은데??싶은 것들을 가져다가 수정하는 정도로만 가능해서요...;;ㅠㅠㅠ
일단 이 정도에서... 만족해야겠네요ㅠㅠㅠㅠ
2020-06-15 (월) 13:58:16
우선 $it['ca_id'] 이것의 값이 어떤 것인지 체크해 보는 것이 우선 같네요..
이 값이 숫자인지, 문자열인지..
가장 좋은 방법은 xdebug를 통해서 찍어 보는 것이라고 하네요.. 전 귀찮아서 그냥 프린트로.
답변에 대한 댓글 1개
coDribble
2020-06-15 (월) 14:07:46
감사드립니다.. 해결이 된듯 합니다...
pg_anchor 함수 안에서 $it['ca_id'] 값을 못불러와서 적용이 안되는거 같아...
혹시나 하는 마음에 global $default 옆에 , $it 도 불러오게끔 추가해보니
제대로 적용이 됩니다;;ㅠㅠ
pg_anchor 함수 안에서 $it['ca_id'] 값을 못불러와서 적용이 안되는거 같아...
혹시나 하는 마음에 global $default 옆에 , $it 도 불러오게끔 추가해보니
제대로 적용이 됩니다;;ㅠㅠ
2020-06-15 (월) 13:36:11
https://regex101.com/ 에서 테스트하셔서 적용하시면 됩니다.
\d는 임의의 숫자 한개의 매칭을 의미합니다.
{10}의 의미는 10번 반복인것 같네요..
1234567890test 를 입력하면 1234567890을 찾아 줍니다.
폴라베어님 처럼 간단하게 사용해도 되고.. 굳이 정규식을 사용한다고 하면..
/^10/ 으로 하면 됩니다. 뒤에 들어가는 옵션도 이번 기회에 조금 보시면 좋구요
답변에 대한 댓글 1개
coDribble
2020-06-15 (월) 13:51:29
답변 감사드립니다...
위 폴라베어님이 알려주신 방법으로 해도 적용이 안되고 있습니다;;ㅠㅠ
/shop/item.php 파일에 pg_anchor 함수 안에서 $it['ca_id'] 를 찍어봤는데 불러오질 못하네요;;
애초에 pg_anchor 안에서 ca_id 값을 못가지고 와서 저 조건이 실행이 안되는거 같은데요...;;
pg_anchor 함수 안에서 ca_id 값을 불러오려면..
[code]
function pg_anchor($anc_id, $ca_id){
~~~~~~~
}
[/code]
이렇게 ca_id 값도 넘겨받아야 할까요...??
위 폴라베어님이 알려주신 방법으로 해도 적용이 안되고 있습니다;;ㅠㅠ
/shop/item.php 파일에 pg_anchor 함수 안에서 $it['ca_id'] 를 찍어봤는데 불러오질 못하네요;;
애초에 pg_anchor 안에서 ca_id 값을 못가지고 와서 저 조건이 실행이 안되는거 같은데요...;;
pg_anchor 함수 안에서 ca_id 값을 불러오려면..
[code]
function pg_anchor($anc_id, $ca_id){
~~~~~~~
}
[/code]
이렇게 ca_id 값도 넘겨받아야 할까요...??
답변을 작성하려면 로그인이 필요합니다.
예전에 어떤 글을 보고 알려주신 방법으로 했었는데요..;;
ca_id 에서 앞에 2글자만 가져와서 10일 경우 실행 이게 적용이 안되더라구요...;;
[code]
<?php if( substr($it['ca_id'], 0, 2) !== '20' ) { ?>
<li><a href="#sit_use" class="cont-title <?php if ($anc_id == 'use') echo 'sanchor_on'; ?>"><i class="icon-text" aria-hidden="true"></i> 리뷰<span class="item_use_count title">(<?php echo $item_use_count; ?>)</span></a></li>
<li><a href="#sit_qa" class="cont-title <?php if ($anc_id == 'qa') echo 'sanchor_on'; ?>"><i class="icon-question" aria-hidden="true"></i> 상품문의<span class="item_qa_count title">(<?php echo $item_qa_count; ?>)</span></a></li>
<?php } ?>
[/code]
실제 코드는 이렇게 되어있는데... ca_id에서 앞에 2글자가 20이 아닐경우...
리뷰, 문의 탭이 보이게 했는데 모든 제품에 다 출력이 되고 있습니다;;ㅠㅠㅠ
데이터 타입이 안맞아서 그런가 싶어서
get_text(substr($it['ca_id'], 0, 2)) !== '20' 으로도 해보고
!= 이렇게도 해보고... 이런저런 방법들을 동원해서 해봤는데도 해결되지않아
아예 정규식으로 패턴을 구해서 처리하면 되지 않을까 싶어서
질문올렸습니다ㅠㅠㅠ