我的某些代码有时会抛出错误,并且找不到原因。
错误是strpos(): Offset not contained in string
语句上的while
。
我知道此错误的含义,但我不知道为什么有时会出现此错误...
这是代码的一部分:
if(!empty($args['name'])){
$p = 0;
while(($p = strpos($args['name'],'&',$p)) !== false){
if(substr($args['name'],$p,5) == '&'){
$p += 5;
}else{
++$p;
$args['name'] = substr($args['name'],0,$p).'amp;'.substr($args['name'],$p);
$p += 4;
}
}
}
我试图通过以下方式更改While语句:
while(strlen($args['name']) >= $p && ($p = strpos($args['name'],'&',$p)) !== false){
但这不能解决问题。
顺便说一下,这段代码来自一个wordpress插件,这是文档:
/** A workaround for seems to be an overlook in WordPress core.
* Dealing with '&' in term name.
* A term name containing '&' is stored in database with '&' instead of '&',
* but search in get_terms is done on raw '&' coming from $_POST variable.
*/
您有什么想法吗?为什么这段代码有时是错误的?
谢谢
已修复
我的变量是Array
...
答案 0 :(得分:1)
请在您的while循环前检查$args['name']
使用if(isset($args['name']))
添加if(!empty($args['name']))
或更多内容
答案 1 :(得分:1)
此代码应该可以正常工作。还可以
在您的情况下,$p
不能大于参数。
请确保您的参数$args['name']
是string
。我敢肯定不是。
我敢打赌这是一个数组(is_array()
)