3

正規表現の経験があまりないことを除いて、preg_replaceを調べてみました。

私がやろうとしているのは、コロンで終わるテキストの一部を太字にして、前に改行を入れ、後に2つの改行を入れることです。

IEはこのテキストを変換します

title1: is some text here. title2: another piece of text.

**title1:**
is some text here.

**title2:**
another piece of text

私はこのようなことをしてみました...

preg_replace("!\*(.*?)\*!$:","\<br \/\>\<strong\>!\*(.*?)\*!\<\/strong\>\<br \/\>",$text);

私はそれを機能させることができないようです。

誰か助けてもらえますか?

ありがとう

そして私

4

3 に答える 3

5

preg_replace正規表現は区切る必要があります。したがって、最初に、正規表現をスラッシュで囲んでみてください。第二に、私はあなたの正規表現を理解していません。のような単純なもの/(\w+):/が機能するはずです。

preg_replace("/(\w+):/", "<br><br><b>$1</b><br>", $text);

@AndiLeeDavis複数の単語のタイトルを処理し、最初の余分な区切りを取り除くために編集された回答:

$mtext = preg_replace("/\.?\s*([^\.]+):/", "<br><br><b>$1</b><br>", $text);
if (strcmp(substr($mtext, 0, 8), "<br><br>") == 0) $mtext = substr($mtext, 8);
于 2012-05-10T22:54:00.293 に答える
2
$text = 'title1: is some text here. title2: another piece of text.';

echo preg_replace('#(\w+:) (.+?\.) ?#', "<b>$1</b><br />$2<br /><br />", $text);

...与える:

<b>title1:</b><br />is some text here.<br /><br /><b>title2:</b><br />another piece of text.<br /><br />

乾杯

于 2012-05-10T22:59:29.430 に答える
0
   $str = 'title1: is some text here. title2: another piece of text.';
   $str = preg_replace("/(\w+:)/", "\n\n**$1**\n", $str);
   echo $str;
于 2012-05-10T23:07:02.027 に答える