2014-01-30 2 views
1

여러분 모두 괜찮습니다.이 PHP 코드의 target = _Blank

그래서 여기에 내가하고 싶은 것이 있습니다. 나는 wordpress에 리뷰 플러그인을 추가하여 target = "_ blank"코드로 새 창에서 원하는 페이지를 열 수 있습니다.

if ($show_morelink != '') { 
       $review->review_text .= " <a href='".$this->get_jumplink_for_review($review,1)."' target="_blank">$show_morelink</a>"; 
      } 

내가 PHP와 I에서 초보자 해요 :

if ($show_morelink != '') { 
       $review->review_text .= " <a href='".$this->get_jumplink_for_review($review,1)."'>$show_morelink</a>"; 
      } 

이 내가 어떤 성공없이 무슨 짓을 :

나는이 원본이며, 마법이 일어나는 곳은 믿습니다 누군가가 이것으로 나를 도울 수 있기를 바랍니다 ... 나는 그렇게 열심히하지 않는다는 것을 안다. 나는 방금 뭔가를 놓친다.

감사합니다.

+0

'href =' "''href =" ''가 아니어야합니까? –

+0

@DanielLisik 이는 PHP의 구문 오류와 HTML의 표준 위반에 해당합니다. 둘 다 나쁘다;) – Halcyon

+1

'target = '_ blank''또는'target = \ "_ blank \"'--- 주석은 "answers"보다 적은 공간을 차지한다 ;-) --- 그것들도 마찬가지로 좋다. . –

답변

3

인용문을 이스케이프 처리해야합니다. 문자열을 처리하기위한

$_morelink != '') { 
     $review->review_text .= "<a href='".$this->get_jumplink_for_review($review,1)."' target=\"_blank\">$show_morelink</a>"; 
    } 

Source 다음

사용.

+3

(또는 작은 따옴표 - 바람직하게는 후자를 사용) – sircapsalot

+1

@sircapsalot amen – jboneca

0

귀하의 문제는 당신이 당신의 HTML에 대한 쌍 따옴표를 사용할 수 있도록, PHP는 문자열을 표시하기 위해 쌍 따옴표를 사용하고 있다는 것입니다 : 당신은 HTML 출력을 보면

if ($show_morelink != '') { 
    $review->review_text .= " <a href='".$this->get_jumplink_for_review($review,1)."' target='_blank'>$show_morelink</a>"; 
} 

당신이 표시됩니다 모두 hreftarget은 작은 따옴표를 사용합니다.

1

코드가 큰 따옴표로 묶여 있기 때문에 대상에 추가 할 때 코드가 중괄호로 나옵니다. 당신이 전체 문자열을 둘러싸고있다 할 수있는 세 번째 방법 편집 을

$review->review_text .= " <a href='".$this->get_jumplink_for_review($review,1)."' target='_blank'>$show_morelink</a>"; 

: 당신은 슬래시 사용하여이 같은 따옴표를 탈출 할 수 있습니다 :

$review->review_text .= " <a href='".$this->get_jumplink_for_review($review,1)."' target=\"_blank\">$show_morelink</a>"; 

를 또는 사용하여 작은 따옴표로 변경 작은 따옴표를 붙이고 내부의 작은 따옴표와 마침표를 제거하십시오.

$review->review_text .= ' <a href="$this->get_jumplink_for_review($review,1)" target="_blank">$show_morelink</a>'; 
0

항상 HTML c에 작은 따옴표를 사용하는 것을 선호합니다 가독성을 높이기 위해 문자열을 수정하십시오.

if ($show_morelink != '') { 
    $review->review_text .= ' 
     <a href="'.$this->get_jumplink_for_review($review,1).'" target="_blank">'.$show_morelink.'</a>'; 
} 
+0

''$ show_morelink "는 그 변수의 값 대신 문자 그대로'$ show_morelink'가 될 것입니다 – sircapsalot

+0

@sircapsalot 고마워, 고쳤다. –

+0

실제로 PHP에서는 작은 따옴표와 큰 따옴표 사이에 기술적 인 차이가 있습니다. 하나는 문자열 리터럴이고 다른 하나는 그렇지 않습니다. 대체로 문자열을 변수로 보간 할 필요가있을 때 리터럴 (연관 배열의 키 등)에 대한 리터럴과 이중 따옴표 (예 : HTML 출력)를 사용하는 것이 더 나은 방법이라고 생각합니다. 출력 문자열을 이스케이프하는 경우에도 마찬가지입니다. – CD001

0

답변 다수; 인용문의 잘못된 이스케이프를 가장 정확하게 지적합니다.

아직 언급하지 않았으므로 sprintf()은 문자열을 연결하는 대신 가독성을 도울 수 있습니다.

$link = $this->get_jumplink_for_review($review,1); 
$text = sprintf('<a href="%s" target="_blank">%s</a>', $link, $label); 
관련 문제