在php中,Onclick事件在具有正则表达式的函数中

时间:2013-11-24 07:23:25

标签: javascript php

我想在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>

1 个答案:

答案 0 :(得分:0)

我相信你想要'<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 value =''; //等等

所以,完全删除整个正则表达式的东西......根据你在这里的例子,它是无用的和臃肿的。

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