분류(ca_id)를 정규식 활용해서 10으로 시작하는 분류를 판별하는 방법....

분류(ca_id)를 정규식 활용해서 10으로 시작하는 분류를 판별하는 방법....

QA

분류(ca_id)를 정규식 활용해서 10으로 시작하는 분류를 판별하는 방법....

본문

정규식 관련된 글을 찾아보고 적용해보려하는데 도저히 어떻게 판별 하는지 막막해서 질문올려봅니다;;

 

$it['ca_id'] 를 가지고 분류가 10으로 시작하는지를 판별하려 하는데요..;;

 


preg_match("/^\d{10}/", $it['ca_id']);

 

일단 정규식 관련 글들을 보면서 저기까지 짜봤습니다...ㅠㅠㅠ

 

정규식은 / 로 시작해서 / 로 끝나야한다....

^ 시작문자를 가리킨다

d 숫자형 문자를 확인한다..

 

이런식으로 정규식 관련 글을 보면서 짜본건데요;;

 

저기서 저걸 어떻게 가져다가 10으로 시작하는 경우를 판별해내나요...??

이 질문에 댓글 쓰기 :

답변 3

단순 하게 10문자만 판별하는거라면 substr() 함수가 더 간단할것 같은데요

패턴은 ^10+[0-9] 이게 맞는지는 모르겠네요


 
if(substr($it['ca_id'], 0, 2) == '10') {
...
}

답변 감사드립니다.

예전에 어떤 글을 보고 알려주신 방법으로 했었는데요..;;

ca_id 에서 앞에 2글자만 가져와서 10일 경우 실행 이게 적용이 안되더라구요...;;


<?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 } ?>


실제 코드는 이렇게 되어있는데... ca_id에서 앞에 2글자가 20이 아닐경우...

리뷰, 문의 탭이 보이게 했는데 모든 제품에 다 출력이 되고 있습니다;;ㅠㅠㅠ

데이터 타입이 안맞아서 그런가 싶어서

get_text(substr($it['ca_id'], 0, 2)) !== '20' 으로도 해보고

!= 이렇게도 해보고... 이런저런 방법들을 동원해서 해봤는데도 해결되지않아

아예 정규식으로 패턴을 구해서 처리하면 되지 않을까 싶어서

질문올렸습니다ㅠㅠㅠ

!== 자료형 까지 비교하기때문에 경우에 따라서 안될수도 있습니다.
!= 처럼 사용하시거나 엄격하게 자료형 비교를 하실꺼라면 형변환을 할수 있게 아래처럼 하셔야될것 같습니다.


$foo = (int) substr($it['ca_id'], 0, 2);
if( $foo !== 20) {
...
}

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/

get_text 를 썼던 건... 저 함수가 문자열로 인식하게 해주는 줄 알고 썼는데 아닌가 보네요;;

덕분에 substr 만으로도 자료형이 string으로 되는걸 알고갑니다;;ㅠㅠㅠ

근데 중요한건 알려주신대로 해도 왜 안되는걸까요...??ㅠㅠㅠ

/shop/item.php 파일에 있는 pg_anchor 함수 안에서

불러오는 탭을 분류값에 따라 보였다안보였다 하기를 원하는건데;;ㅠㅠ

정작 pg_anchor 함수안에서

echo $it['ca_id']를 찍어보면.. ca_id 값을 불러오질 못하는데...

애초에 ca_id 값을 불러오질 못해서 안먹히는거겠죠...??ㅠㅠㅠ

해결이 된듯 합니다...

pg_anchor 함수 안에서 $it['ca_id'] 값을 못불러와서 적용이 안되는거 같아...

혹시나 하는 마음에 global $default 옆에 , $it 을 추가해보니

제대로 적용이 됩니다;;ㅠㅠ

조건에 맞을경우 보이기/숨김 처리가 필요하신거라면

저라면 ul 에 조건 클래스(cate-off) 만들어서 스타일을 적용할것 같은데요

추신) 해당함수코드를 보니 ul은 코어를 수정해야되네요
ul이 들어가는 상위 블록에 조건 클래스 넣어면 스킨으로도 충분이 처리가능할것 같습니다.

저도 간단한 조건같은 경우는 클래스 추가로 처리하긴 하는데...

개발자가 아니다보니 여기페이지 저기페이지 다 열어가며 php 구문이나 sql 쿼리문들 보면서... 이거 가져다가 값만 변경해보면 될거같은데??싶은 것들을 가져다가 수정하는 정도로만 가능해서요...;;ㅠㅠㅠ

일단 이 정도에서... 만족해야겠네요ㅠㅠㅠㅠ

https://regex101.com/ 에서 테스트하셔서 적용하시면 됩니다.

 

\d는 임의의 숫자 한개의 매칭을 의미합니다.

{10}의 의미는 10번 반복인것 같네요..

1234567890test 를 입력하면 1234567890을 찾아 줍니다.

 

폴라베어님 처럼 간단하게 사용해도 되고..  굳이 정규식을 사용한다고 하면..

/^10/  으로 하면 됩니다.  뒤에 들어가는 옵션도 이번 기회에 조금 보시면 좋구요

 

답변 감사드립니다...

위 폴라베어님이 알려주신 방법으로 해도 적용이 안되고 있습니다;;ㅠㅠ

/shop/item.php 파일에 pg_anchor 함수 안에서 $it['ca_id'] 를 찍어봤는데 불러오질 못하네요;;

애초에 pg_anchor 안에서 ca_id 값을 못가지고 와서 저 조건이 실행이 안되는거 같은데요...;;

pg_anchor 함수 안에서 ca_id 값을 불러오려면..


function pg_anchor($anc_id, $ca_id){
~~~~~~~
}

이렇게 ca_id 값도 넘겨받아야 할까요...??

우선 $it['ca_id'] 이것의 값이 어떤 것인지 체크해 보는 것이 우선 같네요..  

이 값이 숫자인지,  문자열인지..

 

가장 좋은 방법은 xdebug를 통해서 찍어 보는 것이라고 하네요.. 전 귀찮아서 그냥 프린트로.

참조 https://sir.kr/g5_tip/13330 

감사드립니다.. 해결이 된듯 합니다...

pg_anchor 함수 안에서 $it['ca_id'] 값을 못불러와서 적용이 안되는거 같아...

혹시나 하는 마음에 global $default 옆에 , $it 도 불러오게끔 추가해보니

제대로 적용이 됩니다;;ㅠㅠ

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

회원로그인

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