게시글 본문 자동링크 관련해서 문의드리려고합니다.
add_filter('kboard_content', 'my_kboard_content', 10, 3);
function my_kboard_content($content, $content_uid, $board_id){
return preg_replace_callback('#(?i)(http|https)?(://)?(([-\w^@]+\.)+(kr|co.kr|go.kr|net|org|edu|gov|me|com|co+)(?:/[^,\s]*|))#', 'kboard_content_autolink_prependHTTP', $content);
}
function kboard_content_autolink_prependHTTP($m){
$mStr = $m[1].$m[2].$m[3];
if(preg_match('#([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#', $mStr)){
return "<a href=\"mailto:".$m[2].$m[3]."\" target=\"_blank\">".$m[1].$m[2].$m[3]."</a>";
}
else{
$http = (!preg_match("#(https://)#", $mStr)) ? 'http://' : 'https://';
return "<a href=\"".$http.$m[3]."\" target=\"_blank\">".$m[1].$m[2].$m[3]."</a>";
}
}
위에 코드를 다른 질문에서 보고 사용하고있는데요..
URL 뒷부분에 .co.kr .com .net 이런부분이 있는데 모든 링크를 대응하려면 어케 해야할지 궁금합니다.
*이 올 모든 이런의미라 해봤는데 안되네요
그리고 링크를 복사붙여넣기 하면 마지막 부분에 /이 붙는 현상이 있는데
위에 코드를 사용하게 되면 본문 뿐만아니라 댓글 입력폼을 클릭할때도 그 링크가 클릭되는 효과가 있네요.
이부분도 수정하는 방법을 알고싶습니다.
안녕하세요~^^
1. 모든 도메인에 링크를 적용하시려면
올려주신 코드 중 아래의 코드를 찾아서
kr|co.kr|go.kr|net|org|edu|gov|me|com|co+
아래의 코드로 교체해보시겠어요?
.*
2. 댓글 입력 폼 클릭 시 링크가 클릭되는 것은
링크 안에 HTML 태그가 들어가 있을 수도 있습니다.
비회원으로도 확인 가능한 페이지 주소 알려주시겠어요?
올려주신 코드 대신
아래의 코드로 교체해서 테스트해보시겠어요?
add_filter('kboard_content', 'my_kboard_content', 10, 3);
function my_kboard_content($content, $content_uid, $board_id){
return preg_replace_callback('#(?i)(http|https)?(://)?(([-\w^@]+\.)+(.*)(?:/[^,\s]*|))#', 'kboard_content_autolink_prependHTTP', $content);
}
function kboard_content_autolink_prependHTTP($m){
$m[1] = strip_tags($m[1]);
$m[2] = strip_tags($m[2]);
$m[3] = strip_tags($m[3]);
$mStr = $m[1].$m[2].$m[3];
if(preg_match('#([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#', $mStr)){
return "<a href=\"mailto:".$m[2].$m[3]."\" target=\"_blank\">".$m[1].$m[2].$m[3]."</a>";
}
else{
$http = (!preg_match("#(https://)#", $mStr)) ? 'http://' : 'https://';
return "<a href=\"".$http.$m[3]."\" target=\"_blank\">".$m[1].$m[2].$m[3]."</a>";
}
}
기존 코드와 비교해보면 모든 도메인에 자동으로 링크를 추가하고
<a> 태그 쪽에 HTML 태그가 들어갈 수도 있기 때문에 HTML 태그를 제거하는 코드도 추가했습니다.
고맙습니다.
위에 코드를 적용하고 유튜브 코드를 붙여넣으면 영상이 보이지 않는 문제도 발생하네요ㅜㅜ
<iframe width="1280" height="720" src="https://www.youtube.com/embed/4OHLJHG1LZ0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
위에 코드를 텍스트 모드에서 붙여넣으면 영상이 보이지 않습니다ㅜㅜ