我想在php中执行以下函数。
"如果文本中有URL格式,则URL将成为链接。当点击URL的链接时,会调用onclick事件。然后生成onclick事件的警报。"
我正在写下面的代码,但它不太好用。
你能告诉我如何解决这个难题吗?
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>test</title>
</head>
<body>
<?php
function makeLink($value) {
return mb_ereg_replace("(https?)(://[[a-zA-Z0-9]+$;?.%,!#~*/:@&=_-]+)", '<a href="#" onclick="alert($value);">12</a>' , $value);
}
$text = 'HELLO!! http://google.com';
echo makeLink($text);
?>
</body>
</html>
我相信你想要'<a href="#" onclick="alert('.$value.');">12</a>'
根据php的版本,有几种方法可以在字符串中使用变量。在您的情况下,您只是在编写字符串$value
,而不是使用变量。
我所做的是结束字符串(用单引号),然后使用点.
连接变量,然后继续字符串(再次使用单引号)。
如果使用双引号,您可以这样做:
$foo = 'code';
echo "this $foo works"; //will echo "this code works"
您的代码还有很多其他错误。值得注意的是,在html中使用"onclick"从来都不是一种好的做法,只会让代码更加混乱。在javascript和php之间进行通信的现代方法是通过ajax,但如果必须采用这种方法,至少要将javascript放入<script>
标记中,并在该标记的开头将所需信息获取到javascript变量中。总之,像这样:
所以,完全删除正则表达式的内容。。。根据你的例子,它既无用又臃肿。
<?php
$text = 'HELLO!! http://google.com';
$linkId = 'my-link';
echo '<a href="#" id="'.$linkId.'">12</a>';
?>
<script>
var text = '<?php echo $text; ?>';
var linkId = '<?php echo $linkId; ?>';
var linkElem = document.getElementById(linkId);
linkElem.addEventListener('click', function() {
myFunction(text);
});
function myFunction(text) {
alert(text);
}
</script>
如果你这样做,至少会更好,但整个方法仍然有很大的缺陷。我建议学习关注点分离和SOLID原则。这都是全局的,难以读取,难以调试等。