نمايش تمام كد هاي خارج از دو تگ

ايا ميشه با preg_match_all تمام اون چيزايي كه خارج از دو تگ هست رو نمايش داد يعني :
HTML:
Out1
<tag1>
(.*)
</tage1>
out2

<tag1>
(.*)
</tage1>

out 3

<tag1>
(.*)
</tage1>
out 4
خروجي بشه اين
کد:
out:Out1,Out2,Out3,Out3
 
یعنی فقط تگ ها حذف کنه ؟
اینجوری معلوم نیست کدوم متن ماله کدوم تگ هست !

خوب اگه اینجوری هست میتونی با کمی ترفند به وسیله str_replace این کار رو انجام بدی .
 
نه.
ميخوام با preg_match_all تمام اونايي كه خارج از دو تگ هستن رو بكنم تو يه آرايه.
array('out1','ou2',......'out');
 
:shock:
من يه چند روش تست كردم ولي در مواردي كار نميكرد :-?
PHP:
     $Code2 = preg_replace('!<tag>([^/]+)</tag>!U','<|Md|>',$Code);
     $ar = explode('<|Md|>',$Code2);
     foreach($ar as $Kay => $value){
     if(empty($value) or preg_match('/^\s+/', $value))echo '';else{
      $Code = preg_replace("|($value)|si","out",$Code);
     }
     }
     echo $Code;
 

P.H.P

Member
ايا ميشه با preg_match_all تمام اون چيزايي كه خارج از دو تگ هست رو نمايش داد يعني :
HTML:
Out1
<tag1>
(.*)
</tage1>
out2

<tag1>
(.*)
</tage1>

out 3

<tag1>
(.*)
</tage1>
out 4
خروجي بشه اين
کد:
out:Out1,Out2,Out3,Out3

با match all این کار شدنیه در صورتی که یه تگ اول متن و یه تگ آخر اضافه کنی و تگ هایی که لازم نداری replace بشه

ولی بهترین کار اینه که از replace استفاده کنی
PHP:
$str = "Out1
<tag1>
(.*)
</tage1>
out2

<tag1>
(.*)
</tage1>

out 3

<tag1>
(.*)
</tage1>
out 4";

echo preg_replace('/\<tag1\>(.*?)\<\/tage1\>/is', ",", $str);

موفق
 
خب ببين من كه همه خروجي رو نميخوام با هم بگيره.
ميخوام عملياتي رويه اونايي كه خارج از تگ هستن انجام بدم مثلا
out 4 = substr('out 4',0,2); جايگزين بشه.

فكر كنم با دو چيز يعني preg_replacce + preg_match_all بشه اين كارو كرد
 
روش اصلي بايد به اين شكل باشه.
PHP:
$Code = preg_replace('!(</tag>)?([^/]+)(<tag>)?!iUsm',"substr($1,0,2)",$Code);

يكي از دوستان ميشه يه دستي رو اين كد بكشه كه درست كار كنه چون بعضي از جاهاش رو رعايت نكردم يعني مياد خود تگ رو هم حذف ميكنه :-?
در كل ميخوام تگ ها باشن خارجشون هم جايگزين بشه با چيزي كه از خودش درست شده باشه.
راستي راهي پيدا نكردم كه substr عمل كنه با ورودي:shock:
 

P.H.P

Member
جان؟؟؟:shock:

دقیق بگو میخوای چکار کنی اینطور که تو هر پستی که دادی یه طور مطرح کردی

اینطوری یعنی؟:-?

PHP:
$str = "Out1
<tag1>
(.*)
</tage1>
out2

<tag1>
(.*)
</tage1>

out 3

<tag1>
(.*)
</tage1>
out 4";
preg_match_all("/\Out1(.*?)out 4/is",$str,$match);
echo preg_replace('/\<tag1\>(.*?)\<\/tage1\>/is', ",", $match[0][0]);
با preg_replace بهتره که
 
آخرین ویرایش:
كد ما بر فرض اين باشه:
HTML:
<tag>
Htmlcode
</tag>
1
<tag>
Htmlcode
</tag>
2
و همينطور ادامه داشته باشه.خب براي سيستمي من ميخوام اونايي كه خارج از دو تگ هستن رو روشون عملياتي انجام بدم.مثلا الان كه عدد هست اونا رو با 1 جمع ببندم مثلا!
نهايتا بعد از رپليس كردن بشه اين"
HTML:
<tag>
 Htmlcode
 </tag>
 2
 <tag>
 Htmlcode
 </tag>
 3
 

P.H.P

Member
متوجه منظورت نمیشم :-?

ولی اینو یه نگاه بنداز
PHP:
$str = "<tag>
Htmlcode
</tag>
1
<tag>
Htmlcode
</tag>
2";

$ex = preg_replace('/\<tag\>(.*?)\<\/tag\>/is', ",", $str); 

$st = explode(",", $ex);
print_r($st);
 

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

بالا