Показать сообщение отдельно
  #2 (permalink)  
Старый 10.10.2016, 18:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от snovapavel
Почему?
Потому, что неверно. Ваш первый пост о тегах также базировался на ошибочном представлении, а ведь надо было использовать preg_match_all, и так:

preg_match_all('/<(div)[^>]*>.*<p[^>]*>.+<\/p>.*<\/div>|<(blockquote)[^>]*>.*<p[^>]*>.+<\/p>.*<\/blockquote>/sU', $string, $matches, PREG_SET_ORDER);

foreach($matches as $r) {
    $r = current(array_diff(array_slice($r, 1), ['']));
    echo 'Параграф вложен в тег ' .$r . '</br>';
}


А в данном случае замена стразу без всяких проверок if...else

$text = preg_replace(['/bab/i', '/(?<!b>)a(?!<\/b)/i'], ['b<b>a</b>b', '<i>a</i>'], $text);

Последний раз редактировалось laimas, 10.10.2016 в 18:30.
Ответить с цитированием