2011-11-16 6 views
1

私はpreg_replaceでいくつかの記事を読んだが、まだ奇妙な[{!( '/)[文字の意味を理解していない。preg_replaceを使ってaを置き換える<br />

基本的に、私は休憩<br />の最初のインスタンスを見つけ、そして私が持っている</strong><br />

コードに置き換えたい:preg_replace('<br />', '</strong><br />', nl2br($row['n_message']), 1)

が、私は、私は宣言する方法で何かが欠けています知っています文字列<br /></strong>

助けが必要ですか?ありがとう。

+0

ような何かを行うこと、およびHTMLのおかしなための寛大( '




...')、および受け入れ前の質問のボタンをクリックします。 –

+0

「奇妙な文字」は[正規表現](http://en.wikipedia.org/wiki/Regular_expression)の構文です。 – Zeenobit

+0

http://regular-expression.info/とマニュアルhttp://www.php.net/manual/en/reference.pcreで正規表現( 'preg_replace'に必要なもの)を学ぶことができます。 pattern.syntax.phpもちろん。 – mario

答えて

6

正規表現

あなたが不足している唯一のことは、あなたの正規表現パターンの区切り文字です。私はこれがどんなキャラクターでもよいと信じています。一般的な選択肢はスラッシュです。しかしもちろん、あなたは既存のスラッシュをエスケープする必要があります。スラッシュと右角カッコを使用した2つの例を示します。私はあなたがこのケースでstr_replaceを使用する必要がありますmichaeljdennisに同意

代替

$text = preg_replace('/<br \/>/', '</strong><br />', nl2br($text), 1); 
$text = preg_replace(']<br />]', '</strong><br />', nl2br($text), 1); 

preg_replaceは空想的な置き換えには適していますが、これほど単純なものではありません。

ただし、str_replaceではありません。には$ limit引数があります。あなたが最初のインスタンスへの交換回数を制限したい場合は、あなたが区切り文字が欠落している

// Split the string into two pieces, before and after the first <br /> 
$str_parts = explode('<br />', $row['message'], 2); 

// Append the closing strong tag to the first piece 
$str_parts[0] .= '</strong>'; 

// Glue the pieces back together with the <br /> tag 
$row['message'] = implode('<br />', $str_parts); 
+0

助けてくれてありがとう。私は1つの機能で効率化しようとしていましたが、少なくともこれが何をしているのかを理解しています。 –

+0

私は自分の答えをpreg_replaceオプションで更新しました。あなたは基本的に2〜3文字しか欠けていました。 – andrewtweber

2

あなたが参照している奇妙な文字は、私が想定している正規表現パターンです。

+0

いいえ、これは
の*すべての*インスタンスを置き換えます。 str_replaceへの$ count引数は、置換の合計数に*設定されます。これは、関数に限られた数を置き換えることを指示していません。 preg_replaceには$ limit引数がありますが、str_replaceはそうではありません! – andrewtweber

関連する問題