来自数组的奇怪的str_replace输出

时间:2012-07-10 19:28:05

标签: php mysql arrays str-replace

这类似于我以前的一个问题here,虽然这是寻找解决方案而不是调试它的工具。我正在尝试构建一个脚本(除其他外)用WikiMedia格式的粗体名称自动替换MySQL数据库中输入的名称,所以当我输入NAME时:我希望得到'''NAME''':。我实际得到的是NAME'''''':。我已经尝试使用str_replace(array("\r", "\n"), array('', ''), $row);在上述问题上发布消息来从我的数组中删除回车,但它没有效果。

我用来生成它的代码是:

<?php
$link = mysql_connect($host, $username, $pass);
$db = mysql_select_db($database, $link);
$query = "SELECT name FROM " . $prefix . ""; 
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
while($row = mysql_fetch_array($result)){
    $name[] = $row['name'];
}

$sim = $_POST['sim']; //Fetches SIM from text box.
$sim_wrap = wordwrap($sim, 80, "\n"); //Constrains to 80 columns for readability.
$sim_penultimate = str_replace("::", "<nowiki>::</nowiki>", $sim_wrap);

$sim_final = str_replace($row . ":", "'''" . $row . "''':", $sim_penultimate); //Bold     names
echo stripslashes($sim_final); //Removes slashes wordwrap() adds on some configurations example (James\'s).
?>

谢谢你能给我的任何帮助,这真让我难过。

1 个答案:

答案 0 :(得分:2)

$row是来自mysql_fetch_array()的结果 - 换句话说,它是一个数组。为什么要用字符串($row . ":")连接它?使用字符串连接数组不起作用 - 您需要连接各个元素。

看起来你真正想要做的就是这样......

$names = array();
$replaces = array();
while($row = mysql_fetch_array($result)){
    $names[] = $row['name'] . ":";
    $replaces[] = "'''" . $row['name'] . "''':";
}

然后又......

$sim_final = str_replace($names, $replaces, $sim_penultimate); // Bold names