PHP / vBulletin - 通过函数传递变量并用输出替换变量
PHP / vBulletin - Passing a variable through a function and replacing a variable with the output
我试图通过函数传递论坛标题变量,然后用输出替换标题变量。我已阅读 the documentation 并已在页面上成功回显,但是当我尝试实现我的变量时,我遇到了困难。
我在 global_start 创建了一个插件,其中包含以下功能:
function seoUrl($string) {
//Lower case everything
$string = strtolower($string);
//Make alphanumeric (removes all other characters)
$string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
//Clean up multiple dashes or whitespaces
$string = preg_replace("/[\s-]+/", " ", $string);
//Convert whitespaces and underscore to dash
$string = preg_replace("/[\s_]/", "-", $string);
}
然后我在 forumbit_display 创建了另一个插件:
$san = 'seoUrl';
$san($forum[title]);
$forumname = $san($forum[title]);
然而我的变量 $forumname
没有输出任何内容。
我已经成功实现了这个瘦身版:
$forumname = strtolower(str_replace(' ', '-', $forum[title]));
我只是想获得一些帮助来克服学习函数的困难。为什么我没有看到任何输出?
您需要return修改后的字符串
function seoUrl($string) {
//Lower case everything
$string = strtolower($string);
//Make alphanumeric (removes all other characters)
$string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
//Clean up multiple dashes or whitespaces
$string = preg_replace("/[\s-]+/", " ", $string);
//Convert whitespaces and underscore to dash
$string = preg_replace("/[\s_]/", "-", $string);
return $string;
}
备注
当您将 string 作为函数参数传递时,该值的副本将传递给您的函数。因此,在函数中所做的任何修改都不会影响函数外部的原始变量,除非您通过引用传递它。
如何获取引用:在参数前加上&
function seoUrl(&$string) {
//Lower case everything
$string = strtolower($string);
//Make alphanumeric (removes all other characters)
$string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
//Clean up multiple dashes or whitespaces
$string = preg_replace("/[\s-]+/", " ", $string);
//Convert whitespaces and underscore to dash
$string = preg_replace("/[\s_]/", "-", $string);
}
现在,上面的代码无需 return 修改后的字符串即可工作。
我试图通过函数传递论坛标题变量,然后用输出替换标题变量。我已阅读 the documentation 并已在页面上成功回显,但是当我尝试实现我的变量时,我遇到了困难。
我在 global_start 创建了一个插件,其中包含以下功能:
function seoUrl($string) {
//Lower case everything
$string = strtolower($string);
//Make alphanumeric (removes all other characters)
$string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
//Clean up multiple dashes or whitespaces
$string = preg_replace("/[\s-]+/", " ", $string);
//Convert whitespaces and underscore to dash
$string = preg_replace("/[\s_]/", "-", $string);
}
然后我在 forumbit_display 创建了另一个插件:
$san = 'seoUrl';
$san($forum[title]);
$forumname = $san($forum[title]);
然而我的变量 $forumname
没有输出任何内容。
我已经成功实现了这个瘦身版:
$forumname = strtolower(str_replace(' ', '-', $forum[title]));
我只是想获得一些帮助来克服学习函数的困难。为什么我没有看到任何输出?
您需要return修改后的字符串
function seoUrl($string) {
//Lower case everything
$string = strtolower($string);
//Make alphanumeric (removes all other characters)
$string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
//Clean up multiple dashes or whitespaces
$string = preg_replace("/[\s-]+/", " ", $string);
//Convert whitespaces and underscore to dash
$string = preg_replace("/[\s_]/", "-", $string);
return $string;
}
备注 当您将 string 作为函数参数传递时,该值的副本将传递给您的函数。因此,在函数中所做的任何修改都不会影响函数外部的原始变量,除非您通过引用传递它。
如何获取引用:在参数前加上&
function seoUrl(&$string) {
//Lower case everything
$string = strtolower($string);
//Make alphanumeric (removes all other characters)
$string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
//Clean up multiple dashes or whitespaces
$string = preg_replace("/[\s-]+/", " ", $string);
//Convert whitespaces and underscore to dash
$string = preg_replace("/[\s_]/", "-", $string);
}
现在,上面的代码无需 return 修改后的字符串即可工作。