[英]Set the value/text of a div using javascript/jquery - inside a php LOOP
我想在循环内使用javascript / jquery设置div的值/文本,但我不知道如何实现它。 我需要这个家伙的帮助。
目标:
我在ff links
表中有此a_link
列。 值:
- 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
}
?>
任何帮助将不胜感激。 谢谢。
这不是它的工作原理,也不是任何一个工作原理
现在,假设您确实需要使用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>
@aimme从技术上讲关于使用其他数据库库是没有错的。 请阅读“ 为什么我不应该在PHP中使用mysql_ *函数? ”,以了解为什么不使用mysql_的原因,以及一些简洁的替代方法,一些教程和一些不错的读物。 (是的,全部在同一页面上!只需向下滚动)
我认为您正在尝试:
<div>
<a>
标记,该标记将“链接”表的“ a_link”列用作href和标签。
只是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不包含“ http://”或“ www”,则此代码不会回显一行。 在里面。 因此不会显示google.com。
值得注意的是,如前所述,正则表达式将可在“ url”(如“ applewww.google.com”)上使用。 不知道这是否重要。 在正则表达式的开头添加“ ^”可以解决问题(例如: 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。的链接),但是由于从名为“ links”的表中提取,假设一切都是有效的路径,也许是安全的。
首先,我想建议使用PDO或mysqli而不是mysql。 因为它容易受到sql注入的影响,并且已贬值。
“我想在循环内使用javascript / jquery来设置div的值/文本,但我不知道如何实现它。我需要这方面的帮助。”
为此,我会说Php是服务器端语言,而javascript是客户端语言。 Ajax是从服务器反过来从服务器操作客户端的方法,而无需刷新整个页面。
下面只是一个示例,我对您的代码进行了一些编辑,以展示服务器端代码和客户端代码的分离,并给出了其工作原理的信息。我不知道代码是否有效。 还没测试 php代码(服务器端)将首先执行,但可以使用document.ready()
或window.load()
javascript(客户端)函数控制其显示,以便尽快应用效果。更改我们需要的链接,然后才显示给客户。 对于检索和显示的每个链接,您都可以使用特定的类和jquery .each()
函数对选定的链接应用特定的修复,因为上述Lyes BEN或具有特定类的所有元素都可以作为一个整体进行操作,而无需使用。每。
<?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>
您可以使用带有parse_url函数( http://php.net/manual/en/function.parse-url.php )的php实现此功能,以获取不同的组件。
在parse_url中,有用于http或https的“方案”键。
然后使用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
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.