用PHP定界符输出大段HTML
在做网站时,经常需要输出大段的HTML或JAVASCRIPT,而且要输出的内容中还本身还有用到引号。通常我们会想把整段的HTML或JAVASCRIPT定义成一个字符串,用平常的echo方法呼出,这是最直接的方法了,然而要把整段自身含有引号的html弄成一个字符串,单双引号的间隔让人眩晕。那么有什么别的好方法能解决这个问题呢?答案就是PHP定界符“<<<”,只要用好它,你的日常工作一定能轻松不少。
为了让大家更好的理解PHP定界符的好处,小卓决定用一个具体的实例来讲解。如下所示,这个实例就是通过向WordPress文章页输出一段JAVASCRIPT,用来在别人企图复制文章内容时,向黏贴板输出网站的版权信息和文章的链接。
- <script type=‘text/javascript’>
- function addLink() {
- var body_element = document.getElementsByTagName(‘body’)[0];
- var selection;
- selection = window.getSelection();
- var pagelink = “<br /><br /> 转载请注明来源: <a href='”+document.location.href+”‘>“+document.location.href+”</a>“;
- var copy_text = selection + pagelink;
- var new_div = document.createElement(‘div’);
- new_div.style.left=‘-99999px’;
- new_div.style.position=‘absolute’;
- body_element.appendChild(new_div );
- new_div.innerHTML = copy_text ;
- selection.selectAllChildren(new_div );
- window.setTimeout(function() {
- body_element.removeChild(new_div );
- },0);
- }
- document.oncopy = addLink;
- </script>
让人感到郁闷的是这段JAVASCRIPT本身已经有了单双引号的嵌套,看着都让人眩晕,如果不使用PHP定界符,想到还要再加上字符串变量的外层引号,想死的心都有了。当然,如果你有足够的耐心,也是能凑出来下面这样的代码来完成。
- <?php if (is_single()){
- $html = “<script type=’text/javascript’>
- function addLink() {
- var body_element = document.getElementsByTagName(‘body’)[0];
- var selection;
- selection = window.getSelection();
- var pagelink = ‘<br /><br /> 转载请注明来源: <a href=”‘+document.location.href+’“>’+document.location.href+'</a>’;
- var copy_text = selection + pagelink;
- var new_div = document.createElement(‘div’);
- new_div.style.left=’-99999px’;
- new_div.style.position=’absolute’;
- body_element.appendChild(new_div );
- new_div.innerHTML = copy_text ;
- selection.selectAllChildren(new_div );
- window.setTimeout(function() {
- body_element.removeChild(new_div );
- },0);
- }
- document.oncopy = addLink;
- </script>”;
- echo $html;
- }
- ?>
而用上PHP定界符“<<<”的话,一切就变得很简单,你不需要考虑单双引号嵌套的问题,HTML或JAVASCRIPT代码该怎么写,就还是照样写,因为自定义的起始标志和终止标志完全区别与单双引号,问题变得非常简单。 需要指出的是当使用PHP定界符时,起始标志和终止标志必须一样,而且终止标志所在行除了那个语句结束符“,”外,不能有其他任何字符,包括空格和制表符。
- <?php if (is_single()){
- $html = <<<EOM
- <script type=’text/javascript’>
- function addLink() {
- var body_element = document.getElementsByTagName(‘body’)[0];
- var selection;
- selection = window.getSelection();
- var pagelink = ‘<br /><br /> 转载请注明来源: <a href=“‘+document.location.href+'”>’+document.location.href+'</a>’;
- var copy_text = selection + pagelink;
- var new_div = document.createElement(‘div’);
- new_div.style.left=’-99999px’;
- new_div.style.position=’absolute’;
- body_element.appendChild(new_div );
- new_div.innerHTML = copy_text ;
- selection.selectAllChildren(new_div );
- window.setTimeout(function() {
- body_element.removeChild(new_div );
- },0);
- }
- document.oncopy = addLink;
- </script>
- EOM;
- echo $html;
- }
- ?>
用PHP定界符来输出大段的HTML和JAVASCRIPT已经让我们觉得很方便了,更绝的是用PHP定界符方式时,还可以支持嵌入PHP的变量,于是我们完全可以直接从网站后端的PHP代码中得到网站信息,文章链接信息等。
- <?php if (is_single()){
- $site_link = get_settings(‘home’);
- $site_name = get_bloginfo(‘name’);
- $permalink = get_the_permalink();
- $html = <<<EOM
- <script type=“text/javascript”>
- function addLink() {
- var body_element = document.getElementsByTagName(‘body’)[0];
- var selection;
- selection = window.getSelection();
- var pagelink='<br /><br />本文来源于<a href=“$site_link”>$site_name</a>, 原文地址:$permalink‘;
- var copy_text = selection + pagelink;
- var new_div = document.createElement(‘div’);
- new_div.style.left=’-99999px’;
- new_div.style.position=’absolute’;
- body_element.appendChild(new_div );
- new_div.innerHTML = copy_text;
- selection.selectAllChildren(new_div );
- window.setTimeout(function() {
- body_element.removeChild(new_div );
- },0);
- }
- document.oncopy = addLink;
- </script>
- EOM;
- echo $html;
- }
- ?>
怎么样?PHP定界符好用吧?是不是感觉到做网站的效率瞬间提升了不少?如果你有什么别的好诀窍,记得跟小卓分享哦。