이 질문을 받았다면 미안하지만 실제로 작동하는 솔루션을 찾을 수 없습니다. 나는 게시판 시스템에서 일하고있다. 그리고 일을 끝냈다.하지만 나는 그것을 바보처럼 처리해야한다. 나는 현재 SQL과 같은 것을 망칠 모든 것을 제거하도록 설정했다. 그러나 strong, em, img, and a를 허용한다. 내 문제는 내가 잘 작동하지만, 태그를 사용하는 사람들은 때로는 그것을 사용하는 방법을 모르겠다, 그래서 대신 설명하는 텍스트를 표시하는 데, 그냥 PHP 나를 위해 그것을 해결하고 싶다는 것입니다. 따라서 사용자는 주소를 잘라내어 붙여 넣기를 한 다음 텍스트를 입력하고 필요한 경우 더 많은 주소를 가지고 양식을 제출할 수 있습니다. 그러면 하이퍼 링크가 작동되기를 원합니다. 지금은 태그를 사용하면 잘 작동하지만 태그를 사용하지 않으면 일반 텍스트가 튀어 나오게됩니다.MySQL 값에 텍스트가 하이퍼 링크로 변경되는 데 문제가있는 링크가 포함되어 있습니다. (내 제목이 엉망입니다.)
나는 모든 곳을 뒤적 거리며 아무 것도 작동하지 않습니다. 가장 많이 일어난 것은 게시물이 전혀 나타나지 않았다는 것입니다. 더 쉽게이 작업을 수행 할 수있는 다른 언어가 있다면 나는이 언어로 작업 할 의향이 있지만 지금은 PHP와 MySQL에 초점을 맞추고 있습니다. 필요하다면 코드를 기꺼이 게시 할 것이지만이 게시물을 실제로 도움이되지 않는 많은 데이터로 넘치고 싶지 않습니다. 난 단지 그것을 필요로 본문 데이터를 검색 링크가 링크로 그것을 발견하고 그것을 주위에 모든 것을 뱉어 찾으십시오.
위로를 피우기 위해, 나는 포함 폴더 안에있는 방법을 사용하고 있습니다. 각 일반 페이지에는 필요한 코드와 관련된 코드 만 있습니다. 따라서 forum.php는 실제로 디자인이 없지만 페이지마다 변경되지 않는 모든 디자인과 정적 컨텐츠가 포함 된 헤더 파일과 푸터 파일을 가져옵니다. 이제 read.php 파일은 includes 폴더에있는 모든 파일을 가져 와서 필요할 경우 적용합니다. 그래서 내가 사용한 코드 :
public static function url_to_link($text) {
// The Regular Expression filter
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
// Check if there is a url in the text
if (preg_match_all($reg_exUrl, $text, $url)) {
// make the urls hyper links
foreach($url[0] as $v){
//current position of the searached url
$curpos = strpos($text,' '.$v)+1;
//delete the url
$text = substr_replace($text,'', $curpos, strlen($v));
//insert the link
$text = substr_replace($text,''.$v.'', $curpos ,0);
}
return $text;
}
else {
// if no urls in the text just return the text
return $text;
}
}
그중 하나는 include/comment.php 파일에 있습니다. 거기에 thread_id를 가져 와서 read.php 페이지로 전달하고 스레드에 대한 응답을 보여주는 다른 함수가 있습니다. 이제 read.php 파일에이 코드를 가지고 :
user wrote:
Thttp://www.example.com
Testing links.
June 28, 2013 at 03:09 PM
____________________________
이이처럼 보이는 뭔가를 생산
<div id="comments">
<?php foreach($comments as $comment): ?>
<div class="comment" style="margin-bottom: 2em;">
<div class="author">
<a href='profile.php?id=<?php echo $diuser[0] ?> '><?php echo htmlentities($comment->author) ?></a> wrote:
</div>
<div class="body">
<?php $comment_body = Comment::url_to_link($comment->body);
echo nl2br($comment_body); ?>
</div>
<div class="meta-info" style="font-size: 0.8em;">
<?php echo datetime_to_text($comment->posted); ?>
</div>
____________________________
</div>
:
<div id="comments">
<?php foreach($comments as $comment): ?>
<div class="comment" style="margin-bottom: 2em;">
<div class="author">
<a href='profile.php?id=<?php echo $diuser[0] ?> '><?php echo htmlentities($comment->author) ?></a> wrote:
</div>
<div class="body">
<?php echo strip_tags($comment->body, '<strong><em><p><a><img>'); ?>
</div>
<div class="meta-info" style="font-size: 0.8em;">
<?php echo datetime_to_text($comment->posted); ?>
</div>
____________________________
</div>
<?php endforeach;
if(empty($comments)) { echo "No comments."; } ?>
</div>
나는 그때 추가 된 새로운 함수를 호출하는 것을 변경
데이터
user wrote:
Testing
http://www.example.com
Testing Links.
Date (you get the idea)
,536으로 보여주는되어야
코드가 뭔가를하고 있지만 데이터를 링크로 변경하지 않고 일부 데이터를 제거한 다음 함께 치기 만하면됩니다. 나는 잘못된 것을하고 있다는 것을 알고 있지만 그것을 이해할 수는 없다.
예 저는 htmlentities와 mysql_real_escape_string을 사용했습니다. 도와주세요.
testing http://stackoverflow.com testing links
내가 출력 작업 링크를 원하지만 난 단지 표시하는 실제 링크를 원하는 :;
--EDIT--
TL 박사는 = 사용자가 포럼에 다음을 입력 링크로; 이 모양이 같아야합니다.
testing <a href="http://stackoverflow.com">http://stackoverflow.com</a> testing links
그러나 발견 된 코드는 작동하지 않습니다.이 작업을 수행하려면 링크 입력을 추가해야합니까, 그렇게 할 수는 있지만, 사용자가 본문 입력의 URL을 입력하기 만하면 코드가 출력에서 실제 링크로 변환됩니다. 현재 가지고있는 코드는 위와 같습니다. 다시 작동하지 않습니다.
이와 비슷한 제품을 찾고 계십니까? http://regexr.com?35d3g –
아니. 그거야. – DataCorrupt