我无法从此函数中删除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有效
答案 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;