1

私は機能を持っています:

function postNumberToLink($string) {
 return preg_replace('!\>\>\d+!', "<a href='#$0'><font color='red'>$0</font></a>", $string);
}

私の質問:

  • (一般的に)どちらが優れていますか: db に入れる前に文字列をフォーマットするか、データベースからクエリした後にクリア テキストをフォーマットしますか?

  • 上記の関数のパターン ($0) と互換性のあるすべての要素を変更したいと思います。これは、最初の 2 文字 (>>) を削除し、残りを href に入れることを意味します。その上で substr を使用しようとしましたが、クラッシュしました。関数を 2 番目のパラメーターとして配置した preg_replace_callback についても読みましたが、関数内に最も単純なコードを記述してもクラッシュしました。テキストを次のようにするにはどうすればよいですか

"I'm replying to post no. >>21313123""I'm replying to post no. [href=21313123][red]>>21313123[/red][/href]"

大括弧 [] で申し訳ありませんが、SO タグがどのように機能するのかわかりません。

よろしくマット

4

1 に答える 1

1

あなたの質問

  1. データベースの構文に保持してください。これにはいくつかの利点があります。

    • HTML だけに限定されません。明日、JSON や XML を出力する API を作成したらどうなるでしょうか。
    • 編集が必要になるたびに、解析を解除して再解析する必要はありません。
  2. 正規表現でコントロール グループを使用できます。

    return preg_replace('!\>\>(\d+)!', "<a href='#$1'><font color='red'>$0</font></a>", $string);
    //                        ^   ^ Brackets!     ^^ First group        ^^ All match
    

追加ポイント:

  • <font>Jon Skeet の評判が 100k 未満になる前から廃止されているため、使用しないでください。代わりに、classリンクに名前を使用し、CSS を使用してスタイルを設定します。

    <a href="#" class="reply-to"> 
    
于 2013-09-25T14:11:50.630 に答える