在php中,使用正则表达式的函数中的Onclick事件
In php, Onclick event in a function with regular expression
我想在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);">'1'2</a>' , $value);
}
$text = 'HELLO!! http://google.com';
echo makeLink($text);
?>
</body>
</html>
我相信你想要'<a href="#" onclick="alert('.$value.');">'1'2</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原则。这都是全局的,难以读取,难以调试等。
相关文章:
- 无法在java脚本中调用图像的点击事件函数
- 如何在事件函数中访问窗口实例
- 事件函数完整日历中的多个ajax调用
- 如何使参数在事件函数中工作
- Jquery Onclick 事件函数第二次不起作用
- 宣传单:双击时不要触发点击事件函数
- Bootstrap/JQuery-单选按钮组事件函数
- 将jQuery事件函数应用于新的Knockout.js数组元素
- 防止在元素上触发新事件,直到当前事件函数在jQuery中完成
- 有没有一种方法可以将多个参数传递给主干js中的事件函数
- 用javascript更新事件函数中的全局变量
- Jquery:如何在事件函数之外获取变量
- 将参数传递给事件函数
- postMessage - 多个 postMessage 事件/函数/回调
- 多事件函数中的悬停延迟
- JavaScript 事件函数 - 在声明之前调用
- 使用 jQuery 循环设置事件函数触发器
- 暂停,直到事件/函数使用 jquery 或 JavaScript 完成
- 如何访问 jQuery 事件函数中的对象属性
- 单击事件函数未从花式盒子灯箱内触发