1

これは私の以前の質問hereの 1 つに似ていますが、これはデバッグするためのツールではなく解決策を探しています。MySQL データベースに入力された名前を (とりわけ) 自動的に WikiMedia 形式の太字の名前に置き換えるスクリプトを作成しようとしています'''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).
?>

あなたが私に与えることができる助けをありがとう、これは本当に私を困惑させます.

4

1 に答える 1

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
于 2012-07-10T19:32:05.760 に答える