You can search material:'; $search = '/(<(?:lang|span) lang="[a-zA-Z0-9_-]*".*?>.+?<\/(?:lang|span)>)/is'; $newtext = preg_replace_callback($search, 'multilangupgrade_impl', $text); print_object($text); print_object($newtext); function multilangupgrade_impl($langblock) { $searchtosplit = '/<(?:lang|span) lang="([a-zA-Z0-9_-]*)".*?>(.+?)<\/(?:lang|span)>/is'; preg_match_all($searchtosplit, $langblock[0], $rawlanglist); $return = ''; foreach ($rawlanglist[1] as $index=>$lang) { $return .= ''.$rawlanglist[2][$index].''; } return $return; } ?>