2

PHPの正規表現を始めたばかりです。私はそれらの読み方と書き方を理解しています (ただし、パターン記号をまったく覚えていないので、本が必要です)。を使用して、自分のサイトで BB コードに RegExp を使用したいと本当に思っていますpreg_replace

パラメーターは理解できますが、理解できないのは、パターンで置き換えられるものを定義するものは何ですか? 私がこれまでに持っているもの:

preg_replace('/(\[url=http:\/\/.*\])/','<a href="$1">$2</a>',"[url=http://google.com]");

今、私はそれがおそらく最善の「セキュリティ」ではないことを知っています。何かを機能させたいだけです。文字列全体に一致する... のようなリンクを取得しますmysite/[url=http://google.com]

私はそれに関するPHPマニュアルを読みましたが、何かを吸収して理解しようとすると、まだ頭痛がします:

  • パターンのために文字列で置き換えられるものを定義するものは何ですか?
  • $1 と $2 などは何であるかを教えてくれるものは何ですか?

彼らが何と呼ばれているかさえ知りません。誰かが私にこれを説明できますか?

4

1 に答える 1

3

エラーのない同じ置換:

$BBlink = '[url=http://google.com]';

$pattern = '~\[url=(http://[^] ]+)]~';
$replacement = '<a href="$1">$1</a>';
$result = preg_replace($pattern, $replacement, $BBlink);

説明:

1) パターン

~       # pattern delimiter
\[      # literal opening square bracket
url=
(       # first capturing group
http://
[^] ]+  # all characters that are not ] or a space one or more times
)       # close the capturing group
]       # literal closing square bracket
~       # pattern delimiter

2) 交換

$1最初のキャプチャ グループを参照する

代替: http://www.php.net/manual/en/function.bbcode-create.php、最初の例を参照してください。

于 2013-06-22T05:30:28.543 に答える