1

wap フォーラムを作成しています。管理者が mycodes という名前のデータベースから、id、name、code、html の列を持つ bbcode を追加できるようにしてください。

Row1
Name: bold
Code: \[b\](.*?)\[/b]
Html: < b >$1< / b >

Row2
Name: undaline
Code: \[u\](.*?)\[/u]
Html: < u >$1< / u >

preg replace を使用すると、行が 1 つある場合にのみ機能し、行が複数ある場合は機能しません。太字のみを解析し、下線は解析しませんか?

function myparse($text){
  $q = mysql_query("SELECT * FROM mycodes");
  while($row = mysql_fetch_array($q)) {
    $code=$row['code'];
    $html=$row['html']
    $Result=preg_replace('#'.$code.'#is', $html, $text);
    return $result;
  }
}

myparse("hey am [b]bold[/b] but he is [u]undalined[/u]");
4

3 に答える 3

1

車輪を再発明する理由:

http://www.christian-seiler.de/projekte/php/bbcode/index_en.html (いくつかの代替へのリンクもあります)

または PECL lib: http://uk1.php.net/manual/en/book.bbcode.php

于 2012-10-24T10:09:59.837 に答える
0

コードの行をループする myparse 関数には何も表示されません。したがって、現在のコードに基づいて、 preg_replace を複数回呼び出すループが必要になります。

function myparse($text){
    // Loop through rows (this might be a database or whatever stores your rows.
    // Since your code doesn't tell us I'll assume it's an array for now
    foreach ($rows as $row) {
        $code=$row['code'];
        $html=$row['html'];
        $Result=preg_replace('#'.$code.'#is', $html, $text);
    }
}
于 2012-10-24T10:11:59.837 に答える
0

コードにいくつかのエラーがあります。正しい関数は次のようになります。

function myparse($text){
    $q = mysql_query("SELECT * FROM mycodes");
    while($row = mysql_fetch_array($q)) {
        $code=$row['code'];
        $html=$row['html']
        $text=preg_replace('#'.$code.'#is', $html, $text);
    }
    return $text;
}

コード内 - mycodes の最初の行のみが実際に使用されます。

于 2012-10-24T10:36:06.447 に答える