Php 使用substr()时出错
我在使用substr时出错: 警告:substr预期参数3很长 我是php新手,无法找到问题所在。我将感谢任何帮助 代码如下:Php 使用substr()时出错,php,Php,我在使用substr时出错: 警告:substr预期参数3很长 我是php新手,无法找到问题所在。我将感谢任何帮助 代码如下: function prepare_string($passed_string,$length) { $matches = array("`","!","@","®","©","~","#","$","%","^","&","*","-","=","+","|","\\","[","{","]","}","(",")",";",":","\
function prepare_string($passed_string,$length)
{
$matches = array("`","!","@","®","©","~","#","$","%","^","&","*","-","=","+","|","\\","[","{","]","}","(",")",";",":","\"","'",",","<",">",".","?","/","\'","\\","'","’");
$passed_string =substr($passed_string,0,$length);
for($i=0;$i<count($matches);$i++)
{
$passed_string = str_replace($matches[$i],"_",$passed_string);
}
$passed_string = str_replace(" ","_",$passed_string);
return $passed_string;
}
var_转储$length并查看其中的内容
删除foreach循环,而只放这一行$passed\u string=str\u replace$matches,\uu,$passed\u string
添加$matches数组,然后您可以去掉这一行$passed\u string=str\u replace,\uu,$passed\u string
听起来substr由于某种原因没有收到格式正确的值。。。一个选项是在函数中添加一行,将$length转换为整数。例如:
function prepare_string($passed_string,$length)
{
// Add this line
$length = (int) $length;
$matches = array("`","!","@","®","©","~","#","$","%","^","&","*","-","=","+","|","\\","[","{","]","}","(",")",";",":","\"","'",",","<",">",".","?","/","\'","\\","'","’");
$passed_string =substr($passed_string,0,$length);
for($i=0;$i<count($matches);$i++)
{
$passed_string = str_replace($matches[$i],"_",$passed_string);
}
$passed_string = str_replace(" ","_",$passed_string);
return $passed_string;
}
什么定义了$length?var_dump$length将告诉您要填充到substr中的内容$length值可能不是正确的值。仅供参考:str_replace也需要一个数组,因此您可以丢弃for循环。$length需要是一个整数值0或更大。正如其他人所建议的,转储$length并查看它是否定义为set,以及它具有什么类型的值。