Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP函数与正则表达式匹配一起使用_Php_Regex - Fatal编程技术网

将PHP函数与正则表达式匹配一起使用

将PHP函数与正则表达式匹配一起使用,php,regex,Php,Regex,我试图找到一种方法来查找字符串中的所有正则表达式匹配,然后通过我编写的函数运行所有这些匹配,但我没有运气 具体地说,我试图在一个字符串中查找所有电子邮件地址,然后使用一个函数将这些地址转换为有用的mailto链接,从而对垃圾邮件机器人隐藏这些地址 因此,我从普通的旧正则表达式开始,将地址转换为mailto链接,这样我就知道匹配是有效的 $pattern = '#([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](f

我试图找到一种方法来查找字符串中的所有正则表达式匹配,然后通过我编写的函数运行所有这些匹配,但我没有运气

具体地说,我试图在一个字符串中查找所有电子邮件地址,然后使用一个函数将这些地址转换为有用的mailto链接,从而对垃圾邮件机器人隐藏这些地址

因此,我从普通的旧正则表达式开始,将地址转换为mailto链接,这样我就知道匹配是有效的

$pattern = '#([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)#i';
$replacement = "<a href='mailto:\\1'>\\1</a>";
$description = preg_replace($pattern, $replacement, $description);
我做错了什么

$description = preg_replace_callback($pattern, 'myFunction', $description);
查看手册以了解其工作原理

您的
myFunction()
函数应该这样编码:

function myFunction($matches)
{
    return sprintf('<a href="mailto:%s">%s</a>', $matches[1], $matches[1]);
}
查看手册以了解其工作原理

您的
myFunction()
函数应该这样编码:

function myFunction($matches)
{
    return sprintf('<a href="mailto:%s">%s</a>', $matches[1], $matches[1]);
}
查看手册以了解其工作原理

您的
myFunction()
函数应该这样编码:

function myFunction($matches)
{
    return sprintf('<a href="mailto:%s">%s</a>', $matches[1], $matches[1]);
}
查看手册以了解其工作原理

您的
myFunction()
函数应该这样编码:

function myFunction($matches)
{
    return sprintf('<a href="mailto:%s">%s</a>', $matches[1], $matches[1]);
}

这就是你要找的。这就是你要找的。这就是你要找的。这就是你想要的。谢谢,但我不知道这个解决方案在我的情况下是否有效。首先,myFunction在许多页面中使用(它位于包含在我所有页面中的include文件中),因此我无法针对这种特定情况对其进行自定义。其次,myFunction实际上有三个参数(为了可读性,我在这里发布的代码中只显示了一个参数)。那么preg\u replace\u callback仍然是这里的解决方案吗?
preg\u replace\u callback()
将匹配项作为参数传递给回调函数。您可能希望创建一个使用
myFunction()
的新回调函数,或者更好地使用闭包作为回调函数(PHP5.3+)。我将用一个闭包示例更新我的答案。:)谢谢,但我不知道这个解决方案在我的情况下是否有效。首先,myFunction在许多页面中使用(它位于包含在我所有页面中的include文件中),因此我无法针对这种特定情况对其进行自定义。其次,myFunction实际上有三个参数(为了可读性,我在这里发布的代码中只显示了一个参数)。那么preg\u replace\u callback仍然是这里的解决方案吗?
preg\u replace\u callback()
将匹配项作为参数传递给回调函数。您可能希望创建一个使用
myFunction()
的新回调函数,或者更好地使用闭包作为回调函数(PHP5.3+)。我将用一个闭包示例更新我的答案。:)谢谢,但我不知道这个解决方案在我的情况下是否有效。首先,myFunction在许多页面中使用(它位于包含在我所有页面中的include文件中),因此我无法针对这种特定情况对其进行自定义。其次,myFunction实际上有三个参数(为了可读性,我在这里发布的代码中只显示了一个参数)。那么preg\u replace\u callback仍然是这里的解决方案吗?
preg\u replace\u callback()
将匹配项作为参数传递给回调函数。您可能希望创建一个使用
myFunction()
的新回调函数,或者更好地使用闭包作为回调函数(PHP5.3+)。我将用一个闭包示例更新我的答案。:)谢谢,但我不知道这个解决方案在我的情况下是否有效。首先,myFunction在许多页面中使用(它位于包含在我所有页面中的include文件中),因此我无法针对这种特定情况对其进行自定义。其次,myFunction实际上有三个参数(为了可读性,我在这里发布的代码中只显示了一个参数)。那么preg\u replace\u callback仍然是这里的解决方案吗?
preg\u replace\u callback()
将匹配项作为参数传递给回调函数。您可能希望创建一个使用
myFunction()
的新回调函数,或者更好地使用闭包作为回调函数(PHP5.3+)。我将用一个闭包示例更新我的答案。:)