2016-10-21 2 views
0

Я следующий код в PHP, где я связывании HTML код:PHP обязательные котировки в HTML

$my_doc.="<img src='mysite.in/$myDoc->my_doc_name' onclick='window.open(".$base_image_url.$myDoc->my_doc_name.")' value='".$myDoc->my_doc_id."' class='cropcss'/>"; 

Он производит следующий вывод:

<img src="mysite.in/8422_1477013411.png" onclick="window.open(mysite.in/8422_1477013411.png)" value="623" class="cropcss"> 

В window.open(mysite.in/8422_1477013411.png) я пропустил одинарную кавычку внутри. Как добавить это?

+0

См: http://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and-double-quoted-strings-in-php или HTTP: // stackoverflow.com/questions/7999148/escaping-quotation-marks-in-php - есть функция поиска ... – CD001

ответ

3

Я предпочитаю использовать одинарные кавычки для вывода таких переменных, как HTML, в браузер. Просто используйте \', чтобы избежать одиночной кавычки и передать ее браузеру. Нечто подобное должно работать:

$my_doc .= '<img src="mysite.in/' . $myDoc->my_doc_name . '" onclick="window.open(\'' . $base_image_url . $myDoc->my_doc_name . '\')" value="' . $myDoc->my_doc_id . '" class="cropcss" />"; 

Если вы настаиваете на использовании двойных кавычек, незначительное быстрое изменение может исправить это (Просто добавьте \" вокруг текста):

$my_doc.="<img src='mysite.in/$myDoc->my_doc_name' onclick='window.open(\"".$base_image_url.$myDoc->my_doc_name."\")' value='".$myDoc->my_doc_id."' class='cropcss'/>"; 

Для получения дополнительной информации см this post о том, как избежать кавычки в PHP

+0

Я бы сказал, что вы должны * использовать двойные кавычки или синтаксис HEREDOC для вывода, поскольку это позволяет интерполяции переменные - одинарные кавычки для таких вещей, как ключи массива, где он должен * обрабатываться буквально. – CD001

+0

@ CD001 Я всегда привык к [этому стилю] (// stackoverflow.com/a/2373206/4875631) кодирования, поэтому мне чуждо видеть, что это наоборот. Поскольку гораздо проще избежать только внутренних одинарных кавычек (они появляются гораздо реже, обычно только в событиях javascript), я всегда склонялся к использованию одинарных кавычек для вывода почти чего-либо (и поскольку он не выполняет строчную интерполяцию, это бит быстрее). – FrankerZ

+0

@FrankerZ. Я использовал второй метод. Он отлично работает. Спасибо за сохранение моих часовых часов. – iCoders

0

код проверки заменить этот

$my_doc.="<img src='mysite.in/$myDoc->my_doc_name' onclick='window.open('".$base_image_url.$myDoc->my_doc_name."')' value='".$myDoc->my_doc_id."' class='cropcss'/>"; 
+0

@ prawan.thanks, но я уже пробовал его. Но ответ Franker работает на меня – iCoders

2

В качестве альтернативы - вы можете использовать синтаксис HEREDOC - сохраняет его красивым и опрятным в выходном коде, не нужно беспокоиться об экранировании кавычек или разбиении/конкатенации строки.

$my_doc .= <<<MYDOC 
<img src="mysite.in/{$myDoc->my_doc_name}" onclick="window.open('{$base_image_url}{$myDoc->my_doc_name}')" value="{$myDoc->my_doc_id}" class="cropcss" /> 
MYDOC; 
+0

@ CD001.Thanks. Это новая концепция для me.thanks ii попробуем это alos – iCoders

+0

Хорошая альтернатива. Возьмитесь за вас, сэр. – FrankerZ

Смежные вопросы