用PHP定界符输出大段HTML

对着电脑欢呼的小孩们

做网站时,经常需要输出大段的HTML或JAVASCRIPT,而且要输出的内容中还本身还有用到引号。通常我们会想把整段的HTML或JAVASCRIPT定义成一个字符串,用平常的echo方法呼出,这是最直接的方法了,然而要把整段自身含有引号的html弄成一个字符串,单双引号的间隔让人眩晕。那么有什么别的好方法能解决这个问题呢?答案就是PHP定界符“<<<”,只要用好它,你的日常工作一定能轻松不少。

为了让大家更好的理解PHP定界符的好处,小卓决定用一个具体的实例来讲解。如下所示,这个实例就是通过向WordPress文章页输出一段JAVASCRIPT,用来在别人企图复制文章内容时,向黏贴板输出网站的版权信息和文章的链接。

  1. <script type=‘text/javascript’>
  2. function addLink() {
  3.     var body_element = document.getElementsByTagName(‘body’)[0];
  4.     var selection;
  5.     selection = window.getSelection();
  6.     var pagelink = “<br /><br /> 转载请注明来源: <a href='”+document.location.href+”‘>“+document.location.href+”</a>“;
  7.     var copy_text = selection + pagelink;
  8.     var new_div = document.createElement(‘div’);
  9.     new_div.style.left=‘-99999px’;
  10.     new_div.style.position=‘absolute’;
  11.     body_element.appendChild(new_div );
  12.     new_div.innerHTML = copy_text ;
  13.     selection.selectAllChildren(new_div );
  14.     window.setTimeout(function() {
  15.         body_element.removeChild(new_div );
  16.     },0);
  17. }
  18. document.oncopy = addLink;
  19. </script>

让人感到郁闷的是这段JAVASCRIPT本身已经有了单双引号的嵌套,看着都让人眩晕,如果不使用PHP定界符,想到还要再加上字符串变量的外层引号,想死的心都有了。当然,如果你有足够的耐心,也是能凑出来下面这样的代码来完成。

  1. <?php if (is_single()){
  2.   $html = “<script type=’text/javascript’>
  3.   function addLink() {
  4.       var body_element = document.getElementsByTagName(‘body’)[0];
  5.       var selection;
  6.       selection = window.getSelection();
  7.       var pagelink = ‘<br /><br /> 转载请注明来源: <a href=”‘+document.location.href+’“>’+document.location.href+'</a>’; 
  8.       var copy_text = selection + pagelink;
  9.       var new_div = document.createElement(‘div’);
  10.       new_div.style.left=’-99999px’;
  11.       new_div.style.position=’absolute’;
  12.       body_element.appendChild(new_div );
  13.       new_div.innerHTML = copy_text ;
  14.       selection.selectAllChildren(new_div );
  15.       window.setTimeout(function() {
  16.           body_element.removeChild(new_div );
  17.       },0);
  18.   }
  19.   document.oncopy = addLink;
  20.   </script>”;
  21.   echo $html;
  22. }
  23. ?>

而用上PHP定界符“<<<”的话,一切就变得很简单,你不需要考虑单双引号嵌套的问题,HTML或JAVASCRIPT代码该怎么写,就还是照样写,因为自定义的起始标志和终止标志完全区别与单双引号,问题变得非常简单。 需要指出的是当使用PHP定界符时,起始标志和终止标志必须一样,而且终止标志所在行除了那个语句结束符“,”外,不能有其他任何字符,包括空格和制表符。

  1. <?php if (is_single()){
  2.   $html = <<<EOM
  3.   <script type=’text/javascript’>
  4.   function addLink() {
  5.       var body_element = document.getElementsByTagName(‘body’)[0];
  6.       var selection;
  7.       selection = window.getSelection();
  8.       var pagelink = ‘<br /><br /> 转载请注明来源: <a href=“‘+document.location.href+'”>’+document.location.href+'</a>’;
  9.       var copy_text = selection + pagelink;
  10.       var new_div = document.createElement(‘div’);
  11.       new_div.style.left=’-99999px’;
  12.       new_div.style.position=’absolute’;
  13.       body_element.appendChild(new_div );
  14.       new_div.innerHTML = copy_text ;
  15.       selection.selectAllChildren(new_div );
  16.       window.setTimeout(function() {
  17.           body_element.removeChild(new_div );
  18.       },0);
  19.   }
  20.   document.oncopy = addLink;
  21.   </script>
  22. EOM;
  23.   echo $html;
  24. }
  25. ?>

用PHP定界符来输出大段的HTML和JAVASCRIPT已经让我们觉得很方便了,更绝的是用PHP定界符方式时,还可以支持嵌入PHP的变量,于是我们完全可以直接从网站后端的PHP代码中得到网站信息,文章链接信息等。

  1. <?php if (is_single()){
  2.   $site_link = get_settings(‘home’);
  3.   $site_name = get_bloginfo(‘name’);
  4.   $permalink = get_the_permalink();
  5.   $html = <<<EOM
  6.     <script type=“text/javascript”>
  7.     function addLink() {
  8.         var body_element = document.getElementsByTagName(‘body’)[0];
  9.         var selection;
  10.         selection = window.getSelection();
  11.         var pagelink='<br /><br />本文来源于<a href=“$site_link”>$site_name</a>, 原文地址:$permalink‘;
  12.         var copy_text = selection + pagelink;
  13.         var new_div = document.createElement(‘div’);
  14.         new_div.style.left=’-99999px’;
  15.         new_div.style.position=’absolute’;
  16.         body_element.appendChild(new_div );
  17.         new_div.innerHTML = copy_text;
  18.         selection.selectAllChildren(new_div );
  19.         window.setTimeout(function() {
  20.             body_element.removeChild(new_div );
  21.         },0);
  22.     }
  23.     document.oncopy = addLink;
  24.     </script>
  25. EOM;
  26.   echo $html;
  27. }
  28. ?>

怎么样?PHP定界符好用吧?是不是感觉到做网站的效率瞬间提升了不少?如果你有什么别的好诀窍,记得跟小卓分享哦。

 

>>原创文章,欢迎转载。转载请注明:转载自惠州市卓优互联科技有限公司,谢谢!
>>原文链接地址:用PHP定界符输出大段HTML


关于作者

留下您的回复