특정 문구를 찾아서 추출 하는방법이 필요합니다.

특정 문구를 찾아서 추출 하는방법이 필요합니다.

QA

특정 문구를 찾아서 추출 하는방법이 필요합니다.

본문

몇시간 삽질을 해도 안되서 질문을 드립니다. ㅠㅠ

 

write_update.head.skin 에서 처리를 해주는데요.

 

wr_content 를 불러내면 html 페이지 안에 이런 문구가 있습니다.

 

<li><span class="stock">재고</span>32개</li>

 

여기서 <li><span class="stock">재고</span> 문구를 찾아서 </il> 사이의 문구를 추출해서

 

wr_1 에 넣어 주려고 하는데요.

 

// $wr_content 변수에 로드될 HTML (예시)
$wr_content = '<li><span class="stock">재고</span>32개</li>';

// 정규식을 사용하여 텍스트 추출
preg_match('/<li><span class="stock">재고<\/span>(.*?)<\/li>/', $wr_content, $matches);

// 추출한 텍스트를 wr_1 변수에 저장
$wr_1 = $matches[1];

 

이렇게 해주면 wr_1에 내용은 잘들어가는데 본문 내용도 32개 만 남습니다. (테스트로 강제로 값을 넣어 줬습니다 )

 

여기서 

 

// 정규식을 사용하여 텍스트 추출
preg_match('/<li><span class="stock">재고<\/span>(.*?)<\/li>/', $wr_content, $matches);

// 추출한 텍스트를 wr_1 변수에 저장
$wr_1 = $matches[1];

 

이렇게만 해주면 아무런 변화가 없어요..

 

제가 뭘 잘못하고 있는지 모르겠습니다..ㅠㅠ

 

wr_content 에 여러가지 내용이 있는데 저 문구를 찾아야 하는 부분인데 못찾고 있어서 그런걸까요?

 

참고로 //$wr_content = str_replace('초과수당', '', $wr_content);

이거는 잘되는데 preg_match는 딱 지정된 문구만 있어야 작동 하는건가요?

이 질문에 댓글 쓰기 :

답변 2

다음 코드는


<?php
// $wr_content 변수에 로드될 HTML (예시)
$wr_content = '<li><span class="stock">재고</span>32개</li>';
// 정규식을 사용하여 텍스트 추출
preg_match('/<li><span class="stock">재고<\/span>(.*?)<\/li>/', $wr_content, $matches);
// 추출한 텍스트를 wr_1 변수에 저장
$wr_1 = $matches[1];

 

다음처럼 각각 기대하는 올바른 값이 담깁니다.


// $wr_content : <li><span class="stock">재고</span>32개</li>
// $wr_1 : 32개

 

문제가 있다면 $wr_content 변수가 다른 어느곳에서 조작되고 있는지 확인이 필요할것 같습니다.

 

아무런 변화가 없는 경우는 정규식에 의해 파싱될 텍스트 규칙이

초기 $wr_content 변수에 없는 경우가 있을것 같습니다.

지금 문제가 wr_content는 원래대로 html 이 담긴대로 입력이 되어야 하고
저 wr_content 안에 저 문구가 있는거거든요. 저 문구만 있는게 아니고 여러 내용이 들어 있는데 저문구만 찾아서 wr_1 에 업데이트 됐으면 좋겠습니다.
$wr_content = '<li><span class="stock">재고</span>32개</li>';라는 값을 직접 입력 하는게 아니거든요... 제가 뭔가 잘못 이해 하고 있는걸까요?

이해된 사항이 맞고
예시 코드는 잘못되지 않은 올바른 코드이며
문제가 있다면 예시 코드가 아닌 다른부분에 있을 가능성이 있습니다.

$wr_content 에 <p>재고 32개</p> 처럼
미리 정의된 정규식에 해당하지 않는 문자열이 담겨있다면 예시 코드는 동작하지 않을것이고

별개로 $wr_content 가 넘어온값 그대로 저장되지 않는다면
다른 어딘가에서 $wr_content 가 조작되고 있을 가능성이 있습니다.

아무리 확인해도 해당 내용이 웹에디터 안에 들어가 있습니다... 그리고 $wr_content = str_replace('재고', '', $wr_content); 이 명령어는 확실히 수행이 됩니다... 재고 라는 글자가 지워져요..정말 이해가 안되네요..ㅠㅠ

아무것도 안하고 본문에 <li><span class="stock">재고</span>32개</li> 만넣고 write_update.head.skin에다가 $wr_1 = $wr_content; 하니까 wr_1 에 <li><span class="stock">재고</span>32개</li> 이게 들어가 있네요. wr_content 값이 문제가 있는거 같지는 않은데 왜 이러는건지..감이 안오네요.

답변을 작성하시기 전에 로그인 해주세요.
전체 15,424
QA 내용 검색
filter #php ×

회원로그인

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