2014-04-16 3 views
0

해시 태그 시스템이 있습니다. (참고 : $ body는 사용자가 제출하는 게시물 인 변수입니다. 해시 태그는 게시물에 있습니다.) 정규식을 사용하여이 작업을 시도했지만 이 방법이 똑같이 효율적이고 따르기가 쉽다는 것을 알게되었습니다.PHP 배열 요소의 하이퍼 링크 만들기

<?php 
$string = $body; 
$htag = "#"; 
$arr = explode(" ", $string); 
$arrc = count($arr); 
$i = 0; 

    while($i < $arrc) { 
     if(substr($arr[$i], 0, 1) === $htag) { 
      $arr[$i] = "<a href = 'category.php?#=$arr[$i]'>".$arr[$i]."</a>"; 
     } 
      $i++; 
    } 

$string = implode(" ", $arr); 

?>

그런 다음, $string 나중에 페이지에 반향된다.

내 문제는 내 해시 태그를 PHP 페이지 배열 요소를 사용하여 범주 페이지에 연결하는 방법입니다. 이 페이지에서 "hashtaged"라는 단어를 호출하고 mysql 쿼리를 사용하여 해시 태그가있는 게시물을 얻고 싶습니다. 나는 $arr[$i]가 반향을 호출 할 때, 오류가 발생합니다 :

Undefined offset: 1 on the line in which I call this array element into another variable.

내가 더 나은보다 효과적인 방법으로이 작업을 완료 할 수있는 방법이 있나요?

+0

너 sh ould는'explode ("", $ string); 대신'preg_split ("\\ b", $ string)'을 고려합니다. '\ b'는 단어의 경계를 알고 있으므로''this is a #tag ''라는 문자열이'# tag '대신에'# tag'를 줄 것입니다. – Halcyon

+0

오류가 발생하지 않더라도, 나는'category.php? # = $ arr [$ i]'가 당신이 원하는 것을 할 것이라고 정말로 생각하지 않습니다. –

+0

Patrick,이 작업을 수행하기위한 하이퍼 링크를위한 더 나은 솔루션이 있습니까? – user3513120

답변

0

좋아요, 그래서 이것은 약간의 regex와 PHP의 preg_replace 함수를 사용하여 매우 간단하게 할 수 있습니다. @Doge는 올바른 방향으로 가고 있었지만 제 테스트에서 \b은 내가 원하는 것이라고 생각하는 결과를주지 못했습니다.

기본적으로, 당신은 대체 할 수있는 거의 모든 당신이 ...

$text = "This is a #hashtag within some #awesometext."; 

$newText = preg_replace("/#(\w+)/", "<a href='category.php?tag=$1'>#$1</a>", $text); 

echo $newText; 

이의 결과가 될 것으로

$newText = preg_replace("/#(\w+)/", "<a href='category.php?tag=$1'>#$1</a>", $text); 

와 무슨의 ...

This is a <a href='category.php?tag=hashtag'>#hashtag</a> within some <a href='category.php?tag=awesometext'>#awesometext</a>. 

See it in action here

+0

이것을 사용하면 링크 된 해시 태그를 에코하려면 implode 함수를 바꾸려면 어떻게해야합니까? (아마 당신이 말할 수 있듯이 정규 표현식에 익숙하지 않다.) :( – user3513120

+0

@ user3513120 링크 된 예제를 보았습니까? 단순히 'preg_replace'의 결과를 반향합니다. 태그가있는 단어가 대체 된 입력 텍스트를 출력합니다 –

+0

죄송합니다. 원본과이 방법을 결합하려고 시도했지만, 내 주요 문제는 htags 링크와도 관련이 있습니다.이 스크립트에서 취한 정보를 어떻게 받아 들일 수 있을까요? 그것은 다른 페이지에서 내 DB에서 모든 게시물을 찾을 수 있습니까? – user3513120

관련 문제