Я новичок в Regex. У меня есть строка вроде:
Hello <b>ABCD</b> World or <b>ABCD</b>Hello World Я в основном хочу сохранить текст внутри жирных тегов, но удалить все остальные символы в строке.
Я нашел код для удаления полужирной части в строке:
 $string = 'This is <b>an</b> example <b>text</b>'; echo preg_replace('/(<b>.+?)+(<\/b>)/i', '', $string); 
Итак, как мне заставить работать работать наоборот?
С уважением Ахмар
  Если вы хотите извлечь данные из HTML или XML-документа, используйте парсер DOM вместо регулярного выражения.  В то время как регулярное выражение будет работать и в простых случаях, оно может стать странным, если прецедент становится более сложным или неожиданные изменения входных данных.  Парсер DOM более стабилен и удобен для этой цели. 
Пример кода:
 $doc = new DOMDocument(); $doc->loadHTML('Hello <b>ABCD</b> World'); foreach($doc->getElementsByTagName('b') as $element) { echo $element->nodeValue; } 
используйте preg_match_all:
 preg_match_all("'<b>(.*?)</b>'si", $text, $match); foreach($match[1] as $val) { echo $val."<br>"; } 
Попробуй это
 function getTextBetweenTags($string, $tagname) { $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/"; preg_match_all($pattern, $string, $matches); return $matches[1]; } $str = 'This is <b>an example text</b>'; $txt = getTextBetweenTags($str, "b"); print_r($txt);