<?php
$txt="[face='黑体']12345[/face][face='黑体']哈哈[/face]";
$return=preg_match_all("/\[face='(.*)'](.+?)\[\/face]/",$txt,$tar);
echo "<pre>";
print_r($tar);
?>我的匹配的意思是以[face='任意数']  以[/face]结尾的最短字符串哪里错了???任意数这里好像似乎应该排除[/face]Array
(
    [0] => Array
        (
            [0] => [face='黑体']12345[/face][face='黑体']哈哈[/face]
        )    [1] => Array
        (
            [0] => 黑体']12345[/face][face='黑体
        )    [2] => Array
        (
            [0] => 哈哈
        ))结果错了,,匹配的最长的字符串,晕

解决方案 »

  1.   

    ……/\[face='(.*)']……   =>  ……/\[face='(.*?)']……没有?,就是贪婪,结果如你所贴
      

  2.   


    那么我已经意识到了,任意数里如何排除  {face=...   和[/face]因为有可能是
    [face=face=][/face]或者
    [face=123[/face]] [/face]不知道这种有没有影响
      

  3.   

    /\[face='(.*)'](.+?)\[\/face]/U   加个U也可以。
      

  4.   

    /\[face='(.*)'](.+?)\[\/face]/U  加个U也行。