특정 문구를 찾아서 추출 하는방법이 필요합니다.
본문
몇시간 삽질을 해도 안되서 질문을 드립니다. ㅠㅠ
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 변수에 없는 경우가 있을것 같습니다.
!-->!-->echo $wr_content; die;
이렇게 해서 출력된 것을 소스보기하여
<li><span class="stock">재고</span>32개</li>와
동일한지 비교해보세요