테스트 사이트 - 개발 중인 베타 버전입니다

배열 속에서 특정 단어가 들어간 배열에서 숫자만 뽑아오고 싶습니다. 채택완료

무와보 1년 전 조회 1,977

게시글에 아래와 같은 배열이 있습니다.

 

대관령국수집@733/23$|바우파머스몰@664/87$|선비촌@538/209$|이화에월백하고@274/467$|이디야커피강원평창점@699/30$|휘닉스정육식당@722/0$|성주식당@497/223$|메밀꽃사랑송어회@612/106$|허생원봉평메밀국수@555/153$|한촌설렁탕평창점@645/63$

 

배열은 | 로 나뉘어져 있고 

" 업소명 @ 숫자1 / 숫자2 $ "

이렇게 구성되어 있습니다.

저는 여기에서 특정 업소명의 숫자2만 불러오려고 하는데 어렵네요.

 

예를 들어 모든 게시물이 위와 같은 배열에 각각의 숫자가 다른데 그중 "성주식당"의 "성주"가 들어간 배열값에서 숫자2만 따로 뽑아오고 싶은데 이럴 경우에는 어떤 방법을 써야 할까요?

 

고수님들의 의견을 구합니다

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
1년 전

정규식으로

$content="대관령국수집@733/23$|바우파머스몰@6~~~";

preg_match("|성주.*/([0-9]+)\\$|U", $content , $match);
echo $match[1];

 

explode, strpos 등으로 가능 하지만 가장 간단한 것은 정규식입니다
 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

무와보
1년 전
역시 정규식의 세계는 과정이 깔끔해지는군요.
explode만 한참 파고 있었는데 이렇게 쉽게 나오네요.
소중한 답변 감사드립니다.

댓글을 작성하려면 로그인이 필요합니다.

</p>

<p><div id="my"></div>

<script>

targetString = "성주";

basicString = "대관령국수집@733/23$|바우파머스몰@664/87$|선비촌@538/209$|이화에월백하고@274/467$|이디야커피강원평창점@699/30$|휘닉스정육식당@722/0$|성주식당@497/223$|메밀꽃사랑송어회@612/106$|허생원봉평메밀국수@555/153$|한촌설렁탕평창점@645/63$";

for (i of basicString.split("$|")) {

    if (i.split("/")[0].indexOf(targetString) > -1) {

        findString = i.split("/")[1];

        break; 

    }

    else findString = "없음";

}

my.innerText = findString;

</script></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

s
sinbi
1년 전
테스트 해보니 아주 잘 작동하네요. https://codepen.io/sinbi/pen/YzgVJZJ
비타주리
1년 전
@sinbi input 로 하려면 조건을 하나 더 추가해야 합니다.
빈칸인 점을 감안해서...

if (i.split("/")[0].indexOf(targetString) > -1 && hz.value.trim() != "")

이게 아마 모던 스크립트로 하는 방법이 있을 거에요. 저는 20년 전 레거시 스크립트입니다.ㅋ
s
sinbi
1년 전
오~~ 역시, 탁월하셔요. (^ _____ ~ )==b
무와보
1년 전
소중한 답변 감사합니다.
잘 작동하는데 정규식이 조금 더 편해보여서 채택하지 못하였습니다.
신경써주셔서 거듭 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인