채택완료

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

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

 

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개 / 댓글 6개

채택된 답변
+20 포인트

다음 코드는

Copy
<?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];

 

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

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

 

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

 

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

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

답변에 대한 댓글 6개

지금 문제가 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); 이 명령어는 확실히 수행이 됩니다... 재고 라는 글자가 지워져요..정말 이해가 안되네요..ㅠㅠ
에디터에서 html로 창을 바꾸고 내용을 다 지우고 <li><span class="stock">재고</span>32개</li> 이거만 남기고 글을 저장해도 동작을 안하네요... ㅠㅜ
현재 상태에서 추가적인 원인은 알수 없으므로
직접 하나하나 디버깅하면서 확인이 필요할것 같습니다.
아무것도 안하고 본문에 <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 값이 문제가 있는거 같지는 않은데 왜 이러는건지..감이 안오네요.

echo $wr_content; die;

이렇게 해서 출력된 것을 소스보기하여 

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

동일한지 비교해보세요

 

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