2014-01-30 7 views
1

Надеюсь, что у вас все хорошо.target = _Blank в этом php-коде

Итак, вот что я хочу сделать. Я хочу добавить в обзор плагин в wordpress возможность открыть страницу, которую я хочу в новом окне с целевым = "_ пустым" кодом.

Я считаю, что это где волшебство происходит, это оригинал:

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

Это то, что я без всякого успеха:

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

Я новичок в PHP, и я надеюсь, что кто-то может помочь мне в этом ... Я знаю, что это не так сложно. Я просто что-то упустил.

Спасибо!

+0

Не должно быть 'href = '" 'be' href = "''? –

+0

@DanielLisik, который будет синтаксической ошибкой в ​​PHP и нарушением стандартов в HTML. Оба плохие;) – Halcyon

+1

Вы можете использовать 'target = '_ blank'' или' target = \ "_ blank \" '--- комментарии занимают меньше места, чем« ответы »;-) --- и они так же хороши , –

ответ

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

Ваша проблема заключается в том, что вы используете doublequotes для обозначения PHP строки, так что вы не можете использовать doublequotes для HTML:

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

Если вы посмотрите на вывод HTML, вы увидите, что оба href и target использовать одинарные кавычки сейчас.

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 ode для улучшения удобочитаемости.

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); 
Смежные вопросы