문장 특정기호로 나누어서 스타일 지정 질문입니다.

문장 특정기호로 나누어서 스타일 지정 질문입니다.

QA

문장 특정기호로 나누어서 스타일 지정 질문입니다.

본문

데이터베이스에 기다란 글이 저장되어있다고 가정했을때 

데이터베이스에서 불러오면서 

단어앞에 #이 붙은 단어에는 특정 색깔을 지정해 줄려고 합니다. 

예를 들어 #php #스쿨 화이팅입니다. #!!! 

이런 글이 있다면 php, 스쿨, !!! 이 단어들은 더 두꺼운 글씨체를 주던가, 색을 바꿔서 나타내려고 합니다. 

설명 부탁드립니다 (__ ) 

이 질문에 댓글 쓰기 :

답변 3


$str = "#php #스쿨 화이팅입니다. #!!!";
$str = explode(" ", $str);
$arr = array();
foreach($str as $v) {
   $arr[] = (strpos($v, "#") > -1) ? "<strong>".str_replace("#", " ", $v)."</strong>" : $v;
}
echo implode(" ", $arr);

정규식을 쓰셔도 되고 이렇게 하셔도 나쁘진 않을 것 같습니다. 

이렇게 쓰니깐 #이 없어져서 보이는거 같습니다. 문법이 어디가 틀린걸까요? 아 그리고 가끔씩 스페이스 공백을 못읽고 스트롱 태그가 먹혀버리는 애들이 있는데 왜 그렇죠 ㅠㅠ?

계란님 하나만 더 물어보고 싶은게 있습니다. #php #스쿨 화이팅입니다. #!!!"

이런식의 글은 문제 없이 잘 빠져 나오는데 예를들어 #이 먼저 붙은게 아니라

php#스쿨 화이팅입니다#!!! 이렇게 #전에 글이 띄어쓰기 안되어 있으면 앞 글까지 strong 이 먹어버리는데 해결 방법이 있을까요 ?

정규식을 이용해서 파싱해보세요

https://regex101.com/#pcre 

/([#A-Z])\w+/ug 


<?php
 
$re = "/(#[a-힣]*)/ui"; 
$str = "#강아지 고양이 #aaa #AAA #흐물흐물"; 
preg_match_all($re, $str, $matches);
 
 
foreach ($matches['0'] as $m) {
	echo "<strong>".$m."</strong> ";
}
?>

 

이거 수정해서 쓸 수 있을련지.. 

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

회원로그인

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