0

我的目标是将字符串中的每个空格“”转换为“%”。

这是我的功能:

<?php
$nazov = "dasa sdas da sd";
$buttonNazov = "";

for($i=0;$i<=strlen($nazov);$i++) {
  if($nazov[$i] === " ") {
     $buttonNazov .= "%"; // Line# 6
  } else {
    $buttonNazov .= $nazov[$i]; // Line#12
  }
}

echo $buttonNazov;
?>

我得到输出,但也有 2 个错误:

( ! ) Notice: Uninitialized string offset: 15 in C:\wamp\www\test.php on line 6
( ! ) Notice: Uninitialized string offset: 15 in C:\wamp\www\test.php on line 12

dasa%sdas%da%sd
4

2 回答 2

0

字符串 $nazov 的最后一个索引是 $nazov[strlen($nazov)-1],所以在循环条件中使用 < 而不是 <=:

for($i=0;$i<strlen($nazov);$i++)
于 2013-10-10T20:54:58.143 回答
0

来自马克贝克评论:Offset begins at 0, not at 1; so $i<strlen($nazov) and not $i<=strlen($nazov)

下面是更好的写法

<?php
$nazov = "dasa sdas da sd";
$buttonNazov = "";
$len = strlen($nazov);

for($i=0; $i<$len; $i++) {
  if("" === $nazov[$i]) {
     $buttonNazov .= "%"; 
  } else {
    $buttonNazov .= $nazov[$i]; 
  }
}
echo $buttonNazov;
?>

如果你想用 % 替换空间,另一种方法

$buttonNazov = str_replace(' ', '%', $nazov);
于 2013-10-10T20:58:50.863 回答