PHP警告:strie_tag()是否要求参数1为字符串?

时间:2016-10-28 作者:tibewww

在我的错误日志中,我遇到了以下错误:

PHP警告:strip\\u tags()要求参数1为字符串

这似乎使我的服务器崩溃。

我不太了解服务器配置/后端开发,但这是受影响的代码:

<?php
            # show categories 
            $categories = get_the_term_list( $post->ID, \'ev_categories\', \'<p>\', \', \', \'</p>\' ); 
            $categories = strip_tags( $categories );
            echo $categories;
            if ($categories <> \'\') echo \'<div class="clear"></div>\';
        ?>

?php

# show categories 
$categories = get_the_term_list( $post->ID, \'ev_categories\', \'<p>\', \', \', \'</p>\' ); 
$categories = strip_tags( $categories );

if ( strpos($categories,\'arts and culture\') !== false ) { $catID = 1; };
if ( strpos($categories,\'business\')         !== false ) { $catID = 2; };
if ( strpos($categories,\'community\')        !== false ) { $catID = 3; };
if ( strpos($categories,\'education\')        !== false ) { $catID = 4; };
if ( strpos($categories,\'sport\')            !== false ) { $catID = 5; };

?>

<?php

# show categories 
$categories = get_the_term_list( $post->ID, \'ev_categories\', \'<p>\', \', \', \'</p>\' ); 
$categories = strip_tags( $categories );

if ( strpos($categories,\'arts and culture\') !== false ) { $catID = 1; };
if ( strpos($categories,\'business\')         !== false ) { $catID = 2; };
if ( strpos($categories,\'community\')        !== false ) { $catID = 3; };
if ( strpos($categories,\'education\')        !== false ) { $catID = 4; };
if ( strpos($categories,\'sport\')            !== false ) { $catID = 5; };

# show locations                    
$locations = get_the_term_list( $post->ID, \'ev_locations\', \'<p>\', \', \', \'</p>\' ); 
$locations  = strip_tags( $locations  );
#echo $locations ;
?>

每次,与下面的第二行相关:

$categories = get_the_term_list( $post->ID, \'ev_categories\', \'<p>\', \', \', \'</p>\' ); 
$categories = strip_tags( $categories );
如果有人知道我怎么解决这个问题,那就太好了,

2 个回复
SO网友:cjbj

如果你看看get_the_term_list, 你会看到,它会先尝试获取条款。如果不成功,它将返回一个错误或false. 因此,在尝试剥离标签之前,您必须考虑到这一点:

if (!is_wp_error ($categories) && false != $categories)
  $categories = strip_tags( $categories );
在所有其他情况下get_the_term_list 返回一个字符串,您的代码应该可以正常工作。

顺便说一下get_the_term_list 添加<p> 如果你马上把它们剥掉的话。此外,在靠近get_the_term_list 可以用来剥离函数添加的链接标记。最后,您可能想看看get_the_terms, 这将为您提供一个很好的术语数组,而不需要任何标签。

SO网友:T.Todua

$类别是一个数组,不能作为字符串进行分析。相反,您最好这样做:

foreach($categories as $name =>$value){
   $locations[] = strip_tags($value->slug);
}
或阵列的另一种方式

array_map(\'strip_tags\', $categories);