데이터베이스에 기다란 글이 저장되어있다고 가정했을때
데이터베이스에서 불러오면서
단어앞에 #이 붙은 단어에는 특정 색깔을 지정해 줄려고 합니다.
예를 들어 #php #스쿨 화이팅입니다. #!!!
이런 글이 있다면 php, 스쿨, !!! 이 단어들은 더 두꺼운 글씨체를 주던가, 색을 바꿔서 나타내려고 합니다.
설명 부탁드립니다 (__ )
답변 3개 / 댓글 6개
채택된 답변
+20 포인트
2016-03-03 (목) 12:19:56
Copy
$str = "#php #스쿨 화이팅입니다. #!!!";$str = explode(" ", $str);$arr = array();foreach($str as $v) { $arr[] = (strpos($v, "#") > -1) ? "<strong>".str_replace("#", " ", $v)."</strong>" : $v;}echo implode(" ", $arr);
정규식을 쓰셔도 되고 이렇게 하셔도 나쁘진 않을 것 같습니다.
답변에 대한 댓글 3개
2016-03-03 (목) 13:32:43
이렇게 쓰니깐 #이 없어져서 보이는거 같습니다. 문법이 어디가 틀린걸까요? 아 그리고 가끔씩 스페이스 공백을 못읽고 스트롱 태그가 먹혀버리는 애들이 있는데 왜 그렇죠 ㅠㅠ?
2016-03-03 (목) 14:06:48
아 제가 str_replace를 했네요.
str_replace("#", " ", $v)
이 부분을 다 지우고 $v만 남기면 돼요.
str_replace("#", " ", $v)
이 부분을 다 지우고 $v만 남기면 돼요.
2016-03-03 (목) 14:23:48
계란님 하나만 더 물어보고 싶은게 있습니다. #php #스쿨 화이팅입니다. #!!!"
이런식의 글은 문제 없이 잘 빠져 나오는데 예를들어 #이 먼저 붙은게 아니라
php#스쿨 화이팅입니다#!!! 이렇게 #전에 글이 띄어쓰기 안되어 있으면 앞 글까지 strong 이 먹어버리는데 해결 방법이 있을까요 ?
이런식의 글은 문제 없이 잘 빠져 나오는데 예를들어 #이 먼저 붙은게 아니라
php#스쿨 화이팅입니다#!!! 이렇게 #전에 글이 띄어쓰기 안되어 있으면 앞 글까지 strong 이 먹어버리는데 해결 방법이 있을까요 ?
port443
2016-03-03 (목) 14:41:21
Copy
<?php $re = "/(#[a-힣]*)/ui"; $str = "#강아지 고양이 #aaa #AAA #흐물흐물"; preg_match_all($re, $str, $matches); foreach ($matches['0'] as $m) { echo "<strong>".$m."</strong> ";}?>
이거 수정해서 쓸 수 있을련지..
답변에 대한 댓글 1개
port443
2016-03-03 (목) 11:31:30
답변에 대한 댓글 2개
2016-03-03 (목) 11:45:26
<?= preg_match_all("/^# $/", $best_wr_content[$i],$match); ?>
정규식 이용해서 할려구 하는데 이 구문이 안맞나봐요... ㅠㅠ 도움좀
정규식 이용해서 할려구 하는데 이 구문이 안맞나봐요... ㅠㅠ 도움좀
port443
2016-03-03 (목) 14:19:30
답변을 작성하려면 로그인이 필요합니다.