0

わかりました、MSSQL データベースにデータを送信する PHP 編集フォーム (前の人が作成) を使用していますが、これは正常に機能しますが、情報がデータベースに送信され、後でフォーム ページを取得すると (編集用) <br>、先頭にテキストの。フィールドが挿入され<ul>ていないa で始まる場合。<br>私はこれを止める方法を見つけようとしています。私が試したことの1つは、書式設定が消えるテキスト内のすべてを削除することになりました.上部に<br>挿入しないようにするにはどうすればよいですか? ここに私が持っているコードがあります:(問題が表示される最初のフィールドまですべてを提供しています)<br><br>

function fromhtml ($x) {
  $x = preg_replace("/<p>/i","\n\n",$x);
  //$x = preg_replace("/<br>/i","\n",$x);
  $x = preg_replace("/<li>/i","\n<li>",$x);

  return $x;
}

$PHP_SELF = $_SERVER['PHP_SELF'];


$course_id = @$_GET["course"];

if ($course_id == "") {

$sqlquery = "SELECT id, title, goals, outline, reference, deliverymode, updated2 = CONVERT(VARCHAR(19), updated, 120)
FROM courses WHERE division_id = '$division_id' ORDER by id";


$result = mssql_query($sqlquery);
$number = mssql_num_rows($result);

print "<table border=1 id=\"content_table\"><tr><th>ID</th><th>Title</th><th>Status</th><th>Last modified</th></tr>\n";

$i = 0;
while ($number > $i) {

        $course_id =  mssql_result($result,$i,"id");
    $reference = mssql_result($result,$i,"reference");
    $updated = mssql_result($result,$i,"updated2");

    print "<tr><td>";
    if ($reference == "") {
            print "<a href=$PHP_SELF?division=$division_id&course=$course_id>$course_id</a>";
    } else {
            print "$course_id";
    }
    print "</td><td>";
        print mssql_result($result,$i,"title");
    print "</td><td>";
    if ($reference == "") {
        if ( (mssql_result($result,$i,"goals")=="") and (mssql_result($result,$i,"outline")=="") ) {
            print "<b>No syllabus, or incomplete</b></td>";
        }
    } else {
        print "Based on $reference";
    }
    print "</td><td>$updated</td>\n";
        print "</tr>\n";  
        $i++;
}

print "</table>";

    exit;
}

$sqlquery = "SELECT * FROM courses WHERE id = '$course_id'";

$result = mssql_query($sqlquery);
$number = mssql_num_rows($result);

if ($number == 0) {
print "<html><body>";
print "No course with the ID \"$course_id\" exists in the course database.";
print "</body></html>";
exit;
}

$i = 0;

$description = fromhtml(mssql_result($result,$i,"description"));
print "<html><head><title>DACC Course Syllabus - $course_id</title>";

print "<script language=\"JavaScript\" type=\"text/javascript\" src=\"/rte/richtext2.js\"></script>";
?>

<script language="JavaScript" type="text/javascript">
<!--    
initRTE("/rte/images/", "/rte/", "");
//-->   

function submitForm() {
   updateRTEs();
   document.edit-course.submit();
   return false;
}
</script>
<?php   
print "</head><body>\n";

//Begin Form
print "<form name=\"edit-course\" id=\"edit-form\" method=\"post\" action=\"write.php?course=$course_id\" onSubmit=\"return submitForm()\">\n";


print "<fieldset>";
 print "<label for=\"description\">Course Description</label>";
$description=addslashes(preg_replace('`[\r\n]`','',$description));
  ?>
   <script language="JavaScript" type="text/javascript">
<!--
  writeRichText('description', '<?php print $description; ?>', 200, 300, true, false);
//-->
</script>
  <?php

   print "</fieldset>";
4

2 に答える 2

0

preg_replaceには 4 番目のパラメーターがあります$limit。これを 1 に設定すると、preg_replace は最初の出現に制限されます。または、正規表現を使用することもできます^<br><br>これは、文字列の先頭にある場合にのみ置き換えられます。

編集:申し訳ありませんが、私はあなたの問題を誤解しました. $variable=preg_replace("/^<br>/i", "", $variable);最初の を取り除くために使用し<br>ます。

于 2012-09-13T15:34:21.870 に答える
0

BR が文字列の最初にある場合は、これを使用します

$x = preg_replace("/^<br(\/|)>/i","\n",$x);

そのコメント行の代わりに

于 2012-09-13T15:35:14.767 に答える