php-noob试图创建一个函数,但在网上找不到解决我困惑的资源。它来了;
我想创建一个使用变量名的函数,例如
盗贼的智慧(4)
并将其转换为
thiefswit.jpg
到目前为止,以下是我所拥有的加载此代码是为了测试我的功能
require_once 'functions.php';
$mod = "Thief's Wit (4)";
convertImage($mod);
echo $mod;
?>
此代码是实际功能
function convertImage($string)
{
$string = preg_replace('/'s+/', '', $string);
$string = str_replace("'", "", $string);
$stringlength = strlen($string);
substr ($string, 0, ($stringlength-4));
$string = strtolower ($string);
$string = "$string" . ".jpg";
return $string;
}
?>
字符串的格式将始终为
这里的名字(4)
这就是为什么我减去长度-4。
当我运行这个函数时,它会回显原始字符串。
这里有人帮忙吗?我是PHP新手,并不真正理解
a) "return"在函数末尾的作用以及b) 函数是否固有地知道用您告诉它在另一个文件中执行的变量替换"$string"?在这种情况下$mod。
谢谢!
您需要保存函数的输出:
$mod = "Thief's Wit (4)";
$mod = convertImage($mod); // save the return value to $mod variable
echo $mod;
函数的返回值是通过调用函数获得的值。因此convertImage($mod)
将具有您返回的值。此时,您需要将结果存储到一个变量中,这可以通过执行$mod = convertImage($mod);
来实现
另一种选择是"通过引用传递",修改函数的参数将修改变量本身。
function convertImage(&$string) // use &$string to pass by reference
{
$string = preg_replace('/'s+/', '', $string);
$string = str_replace("'", "", $string);
$stringlength = strlen($string);
substr ($string, 0, ($stringlength-4));
$string = strtolower ($string);
$string = "$string" . ".jpg";
//return $string; this won't be needed anymore
}
...
$mod = "Thief's Wit (4)";
convertImage($mod);
echo $mod;
您必须返回创建的新字符串
$mod = convertImage($mod);
或者通过引用传递,这意味着函数convertImage
使用与其调用方相同的对传入字符串的引用
function convertImage(&$string) {...}
convertImage($mod); // $mod will point to a new string after the call
function convertImage(&$string) {
$string = strtolower(preg_replace("/[^a-zA-Z]+/", "", $string));
}
应该做你需要的一切-它会去掉任何标点符号和数字等,并使其小写。
已编辑以允许通过引用
您不会在任何位置分配变量值。为了获得实际结果,您需要将函数返回值给一个变量,如下所示:
$mod = convertImage($mod);
一旦实际的函数输出存储在变量中,您就可以随心所欲地在任何地方使用它。
演示:http://codepad.org/naFB74K6
<?php
function convertImage(&$string)
{
$string = preg_replace('/'s+/', '', $string); //Thief'sWit(4)
$string = str_replace("'", "", $string); //ThiefsWit(4)
$string = substr($string, 0, strlen($string)-3); //ThiefsWit
$string = strtolower($string); //thiefswit
return $string.".jpg";
}
$mod = "Thief's Wit (4)";
convertImage($mod);
echo $mod;
?>