【问题标题】:php string in to javascript code with comma except last string用逗号将php字符串输入到javascript代码中,最后一个字符串除外
【发布时间】:2011-09-01 02:26:42
【问题描述】:

我正在使用一个 javascript 插件,这是我需要你帮助的那一行

<script type="text/javascript"> 
   $('ul#news').newswidget({ source: ['http://rss.news.yahoo.com/rss/us', 'http://rss.news.yahoo.com/rss/world', 'http://feeds.bbci.co.uk/news/rss.xml'],

我想从 MySQL 添加 URL 数据 我用这样的while循环来使用它

     $('ul#news').newswidget({ source:[<?php
while($rssrow = mysql_fetch_array($rss))
{
     echo "'"."$rssrow[rss_name]"."'".",";
}
?>],

它不能正常工作:(。 我需要像这样获取 URL、URL、RUL。 这意味着最后一个没有逗号

请大家帮帮我

【问题讨论】:

    标签: php javascript jquery mysql


    【解决方案1】:

    您实际上可以通过简单的重组很容易地做到这一点:

    if($rssrow = mysql_fetch_array($rss))
    {
        echo "'".$rssrow['rss_name']."'";
        while($rssrow = mysql_fetch_array($rss))
        {
             // note no quotes -- they are redundant
             // prepend the comma
             echo ","."'".$rssrow['rss_name']."'";
        }
    }
    

    它确实为读者提供了额外的步骤,但它确实具有不需要子字符串、新数组或标志的好处。

    【讨论】:

      【解决方案2】:

      您可以只构建字符串并删除最后一个逗号:

      $result = '';
      while($rssrow = mysql_fetch_array($rss))
      {
           $result .= "'"."$rssrow[rss_name]"."'".",";
      }
      
      echo ($result != '') ? substr($result, 0, -1) : "''";
      

      或者使用implode():

      $result = array();
      while($rssrow = mysql_fetch_array($rss))
      {
           $result[] = $rssrow[rss_name];
      }
      echo "'" . implode($result, "','") . "'";
      

      (如果结果集为空,这两种方法都会输出''。)

      【讨论】:

        【解决方案3】:
        $urls = "";
        
        while($rssrow = mysql_fetch_array($rss))
        {
            $urls.= "'$rssrow[rss_name]',";
        }
        
        echo substr($urls, 0, -1);
        

        【讨论】:

          【解决方案4】:

          我想知道为什么没有评论指出你绝对应该逃避你的输出。如果条目包含',则除了 Dmitry F 的第一个解决方案之外的所有解决方案都将严重失败。

          $('ul#news').newswidget({ source:[<?php
          $arr = array();
          while($rssrow = mysql_fetch_array($rss))
          {
            $arr[] = '"' . str_replace('"', '\"', $rssrow['rss_name']) . '"';
          }
          echo implode(',', $arr);
          ?>],
          

          【讨论】:

            【解决方案5】:

            这里有一点不同的方法:

            <?php
            $news = array(
            'source' => array(
                'http://example.com',
                'http://example.com'
            )
            );
            $news_json = json_encode($news);
            ?>
            
            <script>
            $('ul#news').newswidget(<?php echo $news_json; ?>);
            </script>
            

            另一种变化:

            $url = array();
            while($rssrow = mysql_fetch_array($rss))
            {
                $url[] = '"' . $rssrow['rss_name'] . '"';
            }
            echo implode(',', $url);
            

            【讨论】:

            • 您的第二个版本丢失了第一个条目。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-10-09
            • 2021-11-11
            • 2013-10-07
            相关资源
            最近更新 更多