title: Enclose PHP variable in Html heading
body: <p>I am trying to enclose PHP variable in Html h1 Heading.</p>
  
  <p>Code is very simple</p>
  
  <pre><code>$html .= "&lt;a id='$id' class='$class' href='$href'&gt;'$text&lt;/a&gt;";
  </code></pre>
  
  <p>So, In the code above, <code>$text</code> variable show text in browser but it shows it as a link with no h1, p or span tag.</p>
  
  <p>I want <code>$text</code> tag to enclose in h1 or p tag. I tried <code>$html .= "&lt;h1&gt;&lt;a id='$id' class='$class' href='$href'&gt;'$text&lt;/a&gt;&lt;/h1&gt;";</code></p>
  
  <p>But its showing random text on browser. Anyone know what's the correct syntax to enclose it in h1 tag?</p>
  
  <p>Full code: (See line 180)</p>
  
  <pre><code>&lt;?php
  
  
  $wpa_version = '3.1';
  
  # Pre-2.6 compatibility (from WP codex)
  if ( ! defined( 'WP_CONTENT_URL' ) )
  define( 'WP_CONTENT_URL', get_option( 'siteurl' ) . '/wp-content' );
  if ( ! defined( 'WP_CONTENT_DIR' ) )
  define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
  if ( ! defined( 'WP_PLUGIN_URL' ) )
  define( 'WP_PLUGIN_URL', WP_CONTENT_URL. '/plugins' );
  if ( ! defined( 'WP_PLUGIN_DIR' ) )
  define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' );
  if ( ! defined( 'WPAUDIO_URL' ) )
  define( 'WPAUDIO_URL', WP_PLUGIN_URL . '/wpaudio-mp3-player' );
  
  ## Get WPaudio's options from DB (or create them if not found)
  $wpa_options = wpaOptions();
  
  ## WP handlers - add WPaudio processing at necessary events
  # If it's not an admin page, get everything for the player
  if ( !is_admin() ) {
  # Calling scripts
  add_action('init', 'wpaLibraries');
  # Add header action to include CSS and JS vars
  add_action('wp_head', 'wpaHead');
  # Add shortcode for WPaudio player
  add_shortcode('wpaudio', 'wpaShortcode');
  # Add filter for shortcode in excerpt and widgets
  add_filter('the_excerpt', 'do_shortcode');
  add_filter('widget_text', 'do_shortcode');
  # Add filter for non-shortcode substitutes (including excerpts and widgets)
  if ($wpa_options['wpa_tag_audio']) {
      add_filter('the_content', 'wpaFilter');
      add_filter('the_excerpt', 'wpaFilter');
      add_filter('widget_text', 'wpaFilter');
  }
  }
  # Add admin
  add_action('admin_menu', 'wpa_menu');
  # Add track
  if ($wpa_options['wpa_track_permalink']) add_action('publish_post', 'wpaPostNew');
  
  function wpaOptions(){
  ## WPA options and defaults
  global $wpa_version;
  $wpa_options = Array(
      'wpa_version' =&gt; $wpa_version,
      'wpa_pref_link_mp3' =&gt; 0,
      'wpa_tag_audio' =&gt; 0,
      'wpa_track_permalink' =&gt; 1,
      'wpa_style_text_font' =&gt; 'Sans-serif',
      'wpa_style_text_size' =&gt; '18px',
      'wpa_style_text_weight' =&gt; 'normal',
      'wpa_style_text_letter_spacing' =&gt; 'normal',
      'wpa_style_text_color' =&gt; 'inherit',
      'wpa_style_link_color' =&gt; '#24f',
      'wpa_style_link_hover_color' =&gt; '#02f',
      'wpa_style_bar_base_bg' =&gt; '#eee',
      'wpa_style_bar_load_bg' =&gt; '#ccc',
      'wpa_style_bar_position_bg' =&gt; '#46f',
      'wpa_style_sub_color' =&gt; '#aaa'
      );
      if ( $wpa_options_db = get_option( 'wpaudio_options' ) ) {
      foreach ( $wpa_options as $key =&gt; $value ) {
          if ( isset($wpa_options_db[$key]) ) {
              $wpa_options[$key] = $wpa_options_db[$key];
          }
      }
      }
      else {
      # Get legacy options and remove if they exist
      if ( get_option('wpa_tag_audio') ) {
          foreach ($wpa_options as $key =&gt; $value) {
              $wpa_option_old_db = get_option($key);
              if ( $wpa_option_old_db !== false &amp;&amp; $wpa_option_old_db !== '' ) {
                  $wpa_options[$key] = $wpa_option_old_db;
              }
              delete_option($key);
          }
      }
      # Create wpaudio_options
          add_option('wpaudio_options', $wpa_options, '', 'no');
          //update_option('wpaudio_options', $wpa_options);
      }
      return $wpa_options;
  }
  
  ## Built-in libraries
  function wpaLibraries(){
  global $wpa_version;
  //wp_deregister_script( 'jquery' );
  //wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js', '1.4.3' );
      if ( version_compare( get_bloginfo( 'version' ), '2.8', '&gt;=' ) ) {
      if ( WP_DEBUG === false ) {
          wp_register_script( 'wpaudio', WPAUDIO_URL . '/wpaudio.min.js', Array('jquery'), $wpa_version, true );
      }
      else {
          wp_register_script( 'wpaudio', WPAUDIO_URL . '/wpaudio.js', Array('jquery'), $wpa_version, true);
      }
      wp_enqueue_script( 'wpaudio' );
      }
      else {
      wp_enqueue_script('jquery');
      add_action('wp_footer', 'wpaFooterForOldVersions');
      }
  }
  
  ## WPaudio style, jQuery, SWFObject
  function wpaHead(){
  global $wpa_options;
  # Put all styles into the _wpaudio settings object
  $style = '';
  foreach ( $wpa_options as $key =&gt; $value ) {
      $exploded = explode('_', $key, 3);
      if ( $exploded[1] == 'style' ) {
          $style .= $exploded[2] . ":'$value',";
      }
  }
  $style = trim( $style, ',' );
  $style = '{' . $style . '}';
  # Common JS
  $wpa_pref_link_mp3 = ($wpa_options['wpa_pref_link_mp3']) ? 'true' : 'false';
  $head = "&lt;script type='text/javascript'&gt;/* &lt;![CDATA[ */ var _wpaudio = {url: '" . WPAUDIO_URL . "', enc: {}, convert_mp3_links: $wpa_pref_link_mp3, style: $style}; /* ]]&gt; */&lt;/script&gt;";
  echo $head;
  }
  
  function wpaFooterForOldVersions() {
  echo '&lt;script type="text/javascript" src="' . WPAUDIO_URL . '/wpaudio.min.js"&gt;&lt;/script&gt;';
  }
  
  # Used only for wpaudio shortcode tags
  function wpaShortcode($atts){
  # Convert shortcodes to WPaudio player depending on settings
  extract(shortcode_atts(Array(
      'url' =&gt; false,
      'text' =&gt; false,
      'dl' =&gt; true,
      'autoplay' =&gt; false
  ), $atts));
  # If no url, return with nothing
  if (!$url)
      return;
  # Get player HTML and JS
  return wpaLink($url, $text, $dl, $autoplay);
  }
  
  # Make WPA link
  function wpaLink($url, $text = false, $dl = true, $autoplay = false) {
  $id = uniqid('wpaudio-');
  $class = 'wpaudio';
  $html = '';
  # Handle dl URLs and no dl players
  if ($dl == '0') {
      $js_url = wpaUnicode($url);
      $href = '#';
      $class .= ' wpaudio-nodl';
  }
  elseif (is_string($dl)) {
      $js_url = wpaUnicode($url);
      $href = $dl;
  }
  else {
      $href = $url;
  }
  if (isset($js_url)) {
      $class .= ' wpaudio-enc';
      $html .= "&lt;script type='text/javascript'&gt;_wpaudio.enc['$id'] = '$js_url';&lt;/script&gt;";
  }
  # Handle blank text
  if (!$text) {
      $text = basename($url);
      $class .= ' wpaudio-readid3';
  }
  # Autoplay
  if ($autoplay == '1') {
      $class .= ' wpaudio-autoplay';
  }
  $html .= "&lt;a id='$id' class='$class' href='$href'&gt;$text&lt;/a&gt;";
  return $html;
  }
  
  # Used for audio tags
  function wpaFilter($content){
  ## Convert audio tags and links to WPaudio player depending on settings
  $tag_regex = '/\[audio:(.*?)\]/';
  $tag_match = preg_match_all($tag_regex, $content, $tag_matches);
  # Replace audio tags with player links
  if ($tag_match){
      foreach ($tag_matches[1] as $key =&gt; $value){
          # This is one tag, first get parameters and URLs
          $params = explode('|', $value);
          $clips = Array('urls' =&gt; Array(), 'titles' =&gt; Array(), 'artists' =&gt; Array());
          $clips['urls'] = explode(',', $params[0]);
          # Process extra parameters if they exist
          for ($i=1; $i&lt;count($params); $i++) {
              # Get the parameter name and value
              $param = explode('=', $params[$i]);
              if ($param[0] == 'titles' || $param[0] == 'artists')
                  $clips[$param[0]] = explode(',', $param[1]);
          }
          # Get player(s)
          $player = '';
          foreach ($clips['urls'] as $ukey =&gt; $uvalue) {
              $text = '';
              $text .= (isset($clips['artists'][$ukey])) ? $clips['artists'][$ukey] : '';
              $text .= (isset($clips['artists'][$ukey]) &amp;&amp; isset($clips['titles'][$ukey])) ? ' - ' : '';
              $text .= (isset($clips['titles'][$ukey])) ? $clips['titles'][$ukey] : '';
              if (!$text) $text = false;
              $player .= wpaLink($uvalue, $text);
          }
          $content = str_replace($tag_matches[0][$key], $player, $content);
      }
  }
  return $content;
  }
  
  # Convert string to unicode (to conceal mp3 URLs)
  include 'php-utf8/utf8.inc';
  function wpaUnicode($str){
  $uni = utf8ToUnicode(utf8_encode($str));
  $output = '';
  foreach ($uni as $value){
      $output .= '\u' . str_pad(dechex($value), 4, '0', STR_PAD_LEFT);
  }
  return $output;
  }
  
  ## WP admin menu
  function wpa_menu() {
  add_options_page('WPaudio Options', 'WPaudio', 'switch_themes', __FILE__, 'wpa_menu_page');
  }
  function wpa_menu_page() {
  global $wpa_options;
  if ($_POST) {
      # Checkboxes need values
      $wpa_checkboxes = Array(
          'wpa_pref_link_mp3',
          'wpa_tag_audio',
          'wpa_track_permalink'
      );
      foreach ($wpa_checkboxes as $value) {
          $_POST[$value] = (isset($_POST[$value]) &amp;&amp; $_POST[$value]) ? 1 : 0;
      }
      # Now process and save all options
      foreach ($wpa_options as $key =&gt; $value) {
          if (isset($_POST[$key]) &amp;&amp; !is_null($_POST[$key]) &amp;&amp; $_POST[$key] !== '')
              $wpa_options[$key] = $_POST[$key];
      }
      update_option('wpaudio_options', $wpa_options);
  }
  wpaOptions();
  </code></pre>