使用javascript / jquery设置di​​v的值/文本 - 在php LOOP中

时间:2015-09-13 02:52:04

标签: javascript php jquery html

我想在循环中使用javascript / jquery设置di​​v的值/文本,但我不知道如何实现它。我需要帮助这个人。

目的:

  1. 从数据库中检索数据。
  2. 使用数据库中的javascript / jquery(在循环内)设置元素的值。
  3. 将值设为链接
  4. 我在a_link表中有links列,其中包含ff。值:

    - www.google.com

    - https://www.google.com

    - www.stackoverflow.com

    这是我的代码:

    <?php
        $querylink = "SELECT * from links";
        $resultlink = mysql_query($querylink);
    
        while ($rowlink = mysql_fetch_array($resultlink))
        { 
         $thelink = $rowlink['a_link'];
    ?>
    
         <div class = "row">
             <span id = "linkhere"></span> 
         </div>
    
         <script>
    
            var link = "<?php echo $thelink; ?>";
            $("#linkhere").html(urlify(link));
    
            function urlify(text) {
               var urlRegex = /(((https?:\/\/)|(www\.))[^\s]+)/g;
               //var urlRegex = /(https?:\/\/[^\s]+)/g;
               return text.replace(urlRegex, function(url,b,c) {
                   var url2 = (c == 'www.') ?  'http://' +url : url;
                  // return '<span style = "color:blue;text-decoration:underline">' + url + '</span>';
                  return '<a href="' +url2+ '" target="_blank">' + url + '</a>';
              }) 
            }
    
         </script>
    <?php
        }
    ?>
    

    任何帮助都将受到高度赞赏。感谢。

4 个答案:

答案 0 :(得分:2)

这不是它的工作方式,这不是其中的任何方法

现在让我们假设您确实需要使用Javascript来处理生成的链接(不是)。

首先需要将您的Javascript代码与PHP代码分开。只有在获取数据并生成一些输出后,才会使用Javascript。

我想你只是想要某种工作代码

<?php
    $querylink = "SELECT * from links";
    $resultlink = mysql_query($querylink);

    while ($rowlink = mysql_fetch_array($resultlink)) : 
     $link = $rowlink['a_link'];
?>
     <div class="row">
         <a href="" data-url="<?php echo $link ?>"></a>
     </div>
<?php 
    endwhile;
?>

<script type="text/javascript">
    $(function() {
        $('.row a').each(function() {
            var urlified = urlify($(this).data('url'));
            $(this).attr('href', urlified.url)
                   .text(urlified.label);
        });
    });

    function urlify(text) {
        var urlRegex = /(((https?:\/\/)|(www\.))[^\s]+)/g;
        return text.replace(urlRegex, function(url,b,c) {
          var label = (c == 'www.') ?  'http://' +url : url;
          return {url: url, label: label};
        }); 
    }
</script>

答案 1 :(得分:2)

  

@aimme在技术上没有错误使用不同的数据库库。请阅读&#34; Why shouldn't I use mysql_* functions in PHP?&#34;为什么不使用mysql_以及一些简洁的替代方案,一些教程和一些好的读取。 (是的,所有人都在同一页面!只需向下滚动)

我认为您正在尝试:

  • 显示<div>班级&#39;行&#39;
      内置<a>标记的
    • 使用&#39; a_link&#39; &#39;链接的列表作为href和标签。
      • 标记的href必须始终具有方案(http://)。

只需PHP和HTML

<?php
    $querylink = "SELECT * from links";
    $resultlink = mysql_query($querylink);

    while ($rowlink = mysql_fetch_array($resultlink))
    { 
        $theLink= $rowlink['a_link'];
        $regexMatches = array();

        // removed (what seemed to be) needless groups in regex
        $urlFound = preg_match("@((https?:\/\/|www\.)[^\s]+)@",$theLink,$regexMatches);

        if($urlFound === 1) {
            // only add http:// if http:// was not detected
            $href = ($regexMatches[2] === "www." ? "http://" : "") . $theLink;
?>
    <div class="row">
        <a href="<?php echo $href; ?>" target="_blank"><?php echo $theLink; ?></a>
    </div>
<?php  }
    }
?>

如果a_link不包含&#39; http://&#39;该代码不会回显一行。或者&#39; www。&#39;在里面。所以google.com将不会显示。

值得注意的是,正如所写,正则表达式将在&#34; urls&#34;喜欢&#39; applewww.google.com&#39;。不知道这是否重要。添加&#39; ^&#39;到正则表达式的开头可以解决问题(如:preg_match("@^((https?:\/\/|www\.)[^\s]+)@",$theLink,$regexMatches);

(更好的)不同的解决方案可以使用parse_url($url)

<?php
    $querylink = "SELECT * from links";
    $resultlink = mysql_query($querylink);

    while ($rowlink = mysql_fetch_array($resultlink))
    { 
        $theLink= $rowlink['a_link'];

        $href = (parse_url($theLink,PHP_URL_SCHEME) === NULL ? "http://" : "") . $theLink;
    ?>
    <div class="row">
        <a href="<?php echo $href; ?>" target="_blank"><?php echo $theLink; ?></a>
    </div>
    <?php
    }
?>

然而,使用parse_url()意味着将显示任何旧字符串(而第一个解决方案不会显示任何没有http://或www。的链接)但是因为你从表中提取叫做链接&#39;假设一切都是有效的道路,可能是安全的。

答案 2 :(得分:0)

  

首先,我想建议使用PDO或mysqli而不是mysql。就这样   容易受到sql注入和折旧。

“我想在循环中使用javascript / jquery设置di​​v的值/文本,但我不知道如何实现它。我需要帮助这个人。”

因为我会说Php是服务器端语言而javascript是客户端语言。而Ajax是从服务器操纵客户端的方式,反之亦然,无需刷新整个页面。

下面只是一个演示,我从你的代码编辑了一点,以显示服务器端和客户端代码的分离,并只是想知道它是如何工作的。我不知道代码是否有效。尚未测试过。 php代码(服务器端)将首先执行,但可以使用document.ready()window.load()内的javascript(客户端)功能来控制它的显示,以尽快应用影响。通过这个我们可以带来在将其显示给客户端之前更改我们想要的链接。对于检索和显示的每个链接,您可以使用特定的类和jquery .each()函数将某些修复应用于上面提到的Lyes BEN所选链接,或者可以将具有特定类的所有元素都操作为一整个不使用.each。

<?php
    $querylink = "SELECT * from links";
    $resultlink = mysql_query($querylink);

    while ($rowlink = mysql_fetch_array($resultlink))
    { 
     $thelink = $rowlink['a_link'];
     echo '<div class = "row">
                <span id = "linkhere">
                    <a href="'.$thelink.'"></a>
                 </span> 
           </div>';
    }
?>
     <script>
        $("#linkhere a").html(urlify(link));

        function urlify(text) {
           var urlRegex = /(((https?:\/\/)|(www\.))[^\s]+)/g;
           //var urlRegex = /(https?:\/\/[^\s]+)/g;
           return text.replace(urlRegex, function(url,b,c) {
               var url2 = (c == 'www.') ?  'http://' +url : url;
              // return '<span style = "color:blue;text-decoration:underline">' + url + '</span>';
              return '<a href="' +url2+ '" target="_blank">' + url + '</a>';
          }) 
        }

     </script>

答案 3 :(得分:0)

你可以使用php和parse_url函数(http://php.net/manual/en/function.parse-url.php)来实现它,以获得不同的组件。

在parse_url中,有http或https的'scheme'键。

然后用php做这个,只需调用formatUrl函数来制作url

<?php 
 function formatUrl($url)
 {
    $urlData = parse_url($url);

    if(!isset($urlData['scheme'])) {
        $url = 'http://' . $url;
    }

    return '<a href="' . $url . '" target="_blank">' . $url . '</a>';
 }
?>

<?php
 $querylink = "SELECT * from links";
 $resultlink = mysql_query($querylink);

 while ($rowlink = mysql_fetch_array($resultlink))
 { 
  $thelink = $rowlink['a_link'];
 ?>

 <div class = "row">
     <span id="linkhere"><?php echo formatUrl($thelink)?></span> 
 </div>
 <?php
 }
?>