<?
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';$str = "
第一条【立法目的】本法是婚姻家庭关系的基本准则。第二条【婚姻制度】实行婚姻自由、一夫一妻、男女平等的婚姻制度。保护妇女、儿童和老人的合法权益。实行计划生育。第三条【禁止的婚姻行为】禁止包办、买卖婚姻和其他干涉婚姻自由的行为。禁止借婚姻索取财物。禁止重婚。禁止有配偶者与他人同居。禁止家庭暴力。禁止家庭成员间的虐待和遗弃。第四条【家庭关系】夫妻应当互相忠实,互相尊重;家庭成员间应当敬老爱幼,互相帮助,维护平等、和睦、文明的婚姻家庭关系。<a name=\"#2\">第二章结婚</a>第五条【结婚自愿】结婚必须男女双方完全自愿,不许任何一方对他方加以强迫或任何第三者加以干涉。";$str = str_replace("\r\n","<br />  ",$str);
$str = str_replace("\n","<br />  ",$str); echo $str;
echo "<hr size='1'>";echo replaceCodeContent($str);//处理法规内容里面的“第*章”,“第*条”
function replaceCodeContent($str)
{
$source = preg_replace_callback('/《(.*?)》/i', 'callBackReplace', $str);
$source = preg_replace('/  第(.*?)章/i', '  <b>第${1}章</b> ', $source, 1);
$source = preg_replace('/  第(.*?)条/i', '  <b>第${1}条</b> ', $source, 1); return $source;
}//处理法规内容回调函数
function callBackReplace($str)
{
$check = array (
   '/《(.*?)》/i'
);

$replace = array(
   '《<a href="http://code.fabao365.com/search/wd='.urlencode($str[1]).'" target="_blank" class="cb014" title="搜索:'.$str[1].'">'.$str[1].'</a>》'
);   return preg_replace($check, $replace, $str[0]);
}
?>
想匹配“第*条”,“第*章”在每个段落出现的第一次,加粗再加一个空格不知道这个正则怎么写,大虾们帮忙啊!

解决方案 »

  1.   

    <a name=\"#2\">第二章结婚</a>
    这个是规则的写法吗?如果是的话可以这么些
    echo preg_replace("/>(第.*章)/iUs", " <b>$1</b>", $str);
      

  2.   


        $source = preg_replace('/  第([^条]*?)章/i', '  <b>第${1}章</b> ', $source);
        $source = preg_replace('/  第([^章]*?)条/i', '  <b>第${1}条</b> ', $source);
      

  3.   

    <?php
    $str = "
    第一条【立法目的】本法是婚姻家庭关系的基本准则。第二条【婚姻制度】实行婚姻自由、一夫一妻、男女平等的婚姻制度。保护妇女、儿童和老人的合法权益。实行计划生育。第三条【禁止的婚姻行为】禁止包办、买卖婚姻和其他干涉婚姻自由的行为。禁止借婚姻索取财物。禁止重婚。禁止有配偶者与他人同居。禁止家庭暴力。禁止家庭成员间的虐待和遗弃。第四条【家庭关系】夫妻应当互相忠实,互相尊重;家庭成员间应当敬老爱幼,互相帮助,维护平等、和睦、文明的婚姻家庭关系。<a name=\"#2\">第二章结婚</a>第五条【结婚自愿】结婚必须男女双方完全自愿,不许任何一方对他方加以强迫或任何第三者加以干涉。";echo $str;
    echo "<p>";
    $str= preg_replace('/^\s*第([^条]*?)条/m', '  <b>第${1}条</b>',$str);
    $str= preg_replace('/^(\s*|<[^>]+>\s*)第([^条]*?)章/m', '  <b>第${2}章</b>',$str);echo $str;?>
      

  4.   


    jnkc,你的方法我试了,只能匹配第一个,接下来的就不匹配了
      

  5.   


    <a name=\"#2\">,这个不一定有链接
    我想要的是想突出每段落最前面的“第*条”,“第*章”,段落里面的不匹配!
      

  6.   


    cangyingzhijia,你好!我刚测试了下你的代码,显示的效果就是我想要的,呵呵就是有样式稍微变动了,能帮我改下么?谢谢了!本人对正则了解的太肤浅了,还望多指教啊!