在php中,使用正则表达式的函数中的Onclick事件

In php, Onclick event in a function with regular expression

本文关键字:事件 函数 Onclick 正则表达式 php      更新时间:2023-10-04

我想在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变量中。总之,像这样:

var值=";//等等

所以,完全删除正则表达式的内容。。。根据你的例子,它既无用又臃肿。

<?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原则。这都是全局的,难以读取,难以调试等。