محدود كردن preg_match_all

آيا ميشه preg_match رو محدود كرد به اين شكل
PHP:
$code =' 
<tag>
code
</tag>

<tag>
code2
;'</tag>

preg_match_all("|(<tag>)([^/]+)(</tag>)|si",$Code, $out, PREG_PATTERN_ORDER);
    print_R($out);
تويه اين كد بجاي اينكه بياد دوتا رو خروجي بده يك خروجي ميده از اول تا اخر
راهي هست كه هر دو رو جدا خروجي بده ؟
 

eAmin

Well-Known Member
آيا ميشه preg_match رو محدود كرد به اين شكل
PHP:
$code =' 
<tag>
code
</tag>

<tag>
code2
;'</tag>

preg_match_all("|(<tag>)([^/]+)(</tag>)|si",$Code, $out, PREG_PATTERN_ORDER);
    print_R($out);
تويه اين كد بجاي اينكه بياد دوتا رو خروجي بده يك خروجي ميده از اول تا اخر
راهي هست كه هر دو رو جدا خروجي بده ؟
سلام.

فلگ g رو هم باید اضافه کنید:
PHP:
"|(<tag>)([^/]+)(</tag>)|sgi"
 
درسته تويه خود سايت php.net هم همين رو گفته ولي وقتي تست ميكنم با اين ارور رو به رو ميشم

کد:
[B]Warning[/B]:  preg_match_all() [[URL="http://localhost/project/coders/function.preg-match-all"]function.preg-match-all[/URL]]: Unknown modifier 'g' in [B]c:\wamp\test.php[/B] on line [B]11[/B]
 
PHP:
<?php
$Code = <<<HTML
<tag>
code
</tag>

<tag>
code2
</tag>
HTML;
preg_match_all("|<tag>([^/]+)</tag>|si",$Code, $out, PREG_PATTERN_ORDER);
    print_R($out);
?>

کد:
Out:
Array (     [0] => Array         (             [0] =>  code              [1] =>  code2          )      [1] => Array         (             [0] =>  code              [1] =>  code2          )  )

ظاهرا خود كد عمل ميكنه :shock:

سوال من بهتر بگم برا اين مورد بود :
PHP:
<?php
$Code = <<<HTML
<tag>
<tag>
code2
</tag>
code
</tag>

HTML;
preg_match_all("|<tag>([^/]+)</tag>|si",$Code, $out, PREG_PATTERN_ORDER);
    print_R($out);
?>

كه تگ تو تگ بشه اين موقع هست كه بطور كلي اشتباه خروجي ميده
 

جدیدترین ارسال ها

بالا