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 回答