............. 채택완료
뭔 내용인지 궁금하셨죠? ㅋㅋ
preg_match_all("/
학생.*<\/p>/", $content, $student); //---- 학생 추출 $stuCnt = count($student[1]);
echo "학생수 {$stuCnt}";
html에 학생이름이 표시된 갯수를 뽑으려고 이렇게 했는데
정규식사이트에서는 몇개인지 잘 나오는데
왜 나의 코드에서는 값이 안나타나는걸까요? ㅜㅜ
</p>
<p><p>학생이름: 홍길동</p></p>
<p>
이렇습니다.   때문일까요?
답변 4개
정규식 강의를 보시는 것을 추천드립니다.^^
개발자팁에 정규식 강의가 잘 올라와 있습니다.
https://sir.kr/pg_tip?sca=PHP&sfl=wr_subject%7C%7Cwr_content&stx=%EC%A0%95%EA%B7%9C%EC%8B%9D
</p>
<p>preg_match_all("/(<(p+)[^>]*>)(학생이름+)(.*?)(<\/\\2>)/", $content, $student);</p>
<p> </p>
<p>echo $student[0][0];</p>
<p>echo $student[0][1];</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
- 링크의 HTML 내용. 질문의 정규식 패턴으로 잘 구해집니다.
- 따로 count()하지 않아도 됩니다. $stuCnt = preg_match_all(...);
- Delimiters는 겹치지 않는 문자 사용하면 Escape 처리하지 않아도 되어 편합니다. /<\/p>/ → #
#- UTF-8이면 Pattern Modifiers - u 붙여주기 /.../u #...#u
</p>
<p>$stuCnt = preg_match_all('#<p>학생.*<\/p>#u', $content, $student);</p>
<p>echo '학생수 : ', $stuCnt, '
';</p>
<p>print_r($student);</p>
<p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
$content 안에는 쌍따옴표가 들어가서는 안 됩니다.
쌍따옴표가 들어가는 문자열은 재주껏 쌍따옴표를 삭제하거나 쌍따옴표 앞에 \ 을 붙여야 합니다.
그냥 저 같으면 자바스크립트로 쉽게...
문자열 전체를 id 를 my 로 준 textarea 안에 넣어 놓고
my.value.split("
학생") 로 배열을 만들고
배열의 length - 1 한 값을 찍어내는 방법을 택할 것 같은데요...
물론 마지막에 값을 추출해 낸 후에는 my.remove() 해서 textarea 를 삭제해 주구요.
</p>
<p><textarea id=my>
<p>
</p>
<p>
<p><a href="source=&scene_type=&8%DF%C3%DC%BF%AD%B4%B4%C0%CD%B1%A3%B7%C0%BB%A4"></a></p></p>
<p><p>학생이름: 홍길동</p></p>
<p><table cellspacing="0">
<tbody>
<tr>
<td style="text-align:center; vertical-align:top; width:30px"> </td>
<td style="text-align:center; vertical-align:top">
<table cellspacing="0">
<tbody>
<tr>
</td>
<td style="text-align:center; vertical-align:top; width:100px">
<p><img src="./h1LLkHO_!!6000000002705-2-tps-68-24.png" style="height:13px" /></p></p>
<p> <p>53.20</p></p>
<p> <p>56.00</p>
</td>
<td style="text-align:center; vertical-align:top; width:60px">
<p>1</p>
</td></p>
<p> </tr>
</tbody>
</table>
</td>
<td style="text-align:center; vertical-align:top; width:108px">
<p>600</p></p>
<p>
<p><a href="source=&scene_type=&B6%A6%C0%CD%B1%A3%D3%C3%C6%B7">...</a></p></p>
<p><p>학생이름: 춘향이</p></p>
<p><table cellspacing="0">
<tbody>
<tr>
<td style="text-align:center; vertical-align:top; width:30px"> </td>
<td style="text-align:center; vertical-align:top">
<table cellspacing="0">
<tbody>
<tr>
</textarea>
<script>
myCount = my.value.split("<p>학생").length - 1;
document.write(myCount);
my.remove();
</script></p>
<p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인