如何修复警告:strlen()期望参数1是字符串,给定数组?

时间:2016-06-09 14:52:53

标签: php arrays string

我无法从此函数中删除strlen来计算。如何在这样的函数中使用数组和strlen?

PHP

if(isset($_POST['cek'])) {
function match( $text, $pattern ) {
    $count=0;
    $split_words = explode(' ', $text );
     $cek = 0;
     $n=strlen($split_words);
     $m=strlen($pattern);

 for ($i = 0; $i <= $n - $m; $i++) {
    $j = 0;
    while ($j < $m && $split_words[$i + $j] == $pattern[$j]){
       echo $j++;
    }
    if ($j >= $m) {
     echo  $cek++;

       }

 }
 if ($cek > 0) {
    echo "matched";
     $count;
 } else {
   echo  "didn't match ";
 }
}
$banned_words = array('badword1','badword2','badword3','badword4','badword5','badword6','badword7');
$teks = $_POST['teks'];
echo   match($teks, $banned_words);
$count2 = match($teks,$banned_words);
if ($count2 != 0) {
echo $count2;
echo 'blocked!';
}else{
echo $count2;
echo 'Text valid';
}
}

HTML

 <form method="post">
<input type="text" name="teks"/>
<button type="submit" name="cek">Submit</button>

输出

  

警告:strlen()期望参数1为字符串,第7行的C:\ xampp \ htdocs \ kmp \ bs.php中给出的数组   警告:strlen()期望参数1为字符串,在第8行的C:\ xampp \ htdocs \ kmp \ bs.php中给出数组   0matched   警告:strlen()期望参数1为字符串,在第8行的C:\ xampp \ htdocs \ kmp \ bs.php中给出数组   0matchedText有效

2 个答案:

答案 0 :(得分:0)

  

问:如何修复警告:strlen()期望参数1为字符串,给定数组?

简答:要修复此错误,您只需要将字符串作为参数而不是数组传递。就像它说的那样。

看来,你的一个strlens&#39;参数不是字符串($split_words$pattern

此外$split_words似乎是一个数组,因为它是explode()的结果。如果要计算数组中元素的数量,请使用count而不是strlen()

strlen()

的示例
$string = 'test';
echo strlen($string);

打印:4

答案 1 :(得分:0)

希望这会有所帮助。 您可以像这样计算字符串长度:

<?php

$text = 'Hello this is a string';

$split_words = explode(' ', $text );

$count = 0;

foreach($split_words as $value){
    $count+= strlen($value);
};

echo $count;