Здравствуйте. Есть код который вставляет после найденых абзацов "<p>...</p>" слово "text". ----------------------- Код (PHP): $after_p = 'text'; $row->text = preg_replace('/<\/p>/', '</p>'. $after_p, $row->text, 5); ----------------------- Необходимо исключить вставку слова "text" если в теле поиска будет обнаружена <table> или <blockquote> в которых будут находится теги абзацов. К примеру тело поиска: ----------------------- Код (PHP): <p>...</p> <p>...</p> <table> <tr> <td><p>...</p></td> <td><p>...</p></td> </tr> </table> <p>...</p> <blockquote><p>...</p></blockquote> <p>...</p> ----------------------- Что должно получится: ----------------------- Код (PHP): <p>...</p>text <p>...</p>text <table> <tr> <td><p>...</p></td> <td><p>...</p></td> </tr> </table> <p>...</p>text <blockquote><p>...</p></blockquote> <p>...</p>text ----------------------- То есть в таблице и в цитатах после абзацов не добавлять слово "text". Приведенный код выше вставляет "text" и в таблице и в цитатах. Добавлено спустя 13 минут 11 секунд: Следующим кодом возможно добиться исключения вставки слова "text" между тегами <table>, но как еще добится и того что бы не вставляло между тегами <blockquote>? ---------------------------- Код (PHP): $xx='<p>...</p> <p>...</p> <table> <tr> <td><p>...</p></td> <td><p>...</p></td> </tr> </table> <p>...</p>'; $mask='<<<%s>>>'; $pl=array(); $yy=preg_replace_callback( '~<table>.*?</table>~is', function($m) use (&$pl,$mask){ $pl[]=$m[0]; return sprintf($mask,count($pl)); }, $xx ); $tt=preg_replace('/<\/p>/', '</p>text', $yy); $zz=preg_replace_callback( '~'.sprintf(preg_quote($mask,'~'),'(.*?)').'~si', function($m) use ($pl){ return $pl[$m[1]-1]; }, $tt ); print_r($zz); ---------------------------- PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
РЕШЕНО! Возможно код громоздкий, но работает. Если есть у кого-то другие варианты, просьба поделится. ---------------------------- Код (PHP): <?php $xx='<p>...</p> <p>...</p> <table> <tr> <td><p>...</p></td> <td><p>...</p></td> </tr> </table> <p>...</p> <blockquote><p>...</p></blockquote> <p>...</p>'; $mask='<<<%s>>>'; $pl=array(); $yy=preg_replace_callback( '~<table>.*?</table>~is', function($m) use (&$pl,$mask){ $pl[]=$m[0]; return sprintf($mask,count($pl)); }, $xx ); $yy=preg_replace_callback( '~<blockquote>.*?</blockquote>~is', function($m) use (&$pl,$mask){ $pl[]=$m[0]; return sprintf($mask,count($pl)); }, $xx ); $tt=preg_replace('/<\/p>/', '</p>text', $yy); $zz=preg_replace_callback( '~'.sprintf(preg_quote($mask,'~'),'(.*?)').'~si', function($m) use ($pl){ return $pl[$m[1]-1]; }, $tt ); print_r($zz); ---------------------------- PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]