- preg_replace: documentation ( source)
<?php
$input = <<<HTML
<tr>
Fried rice with chicken, beef, prawn or vegetable.
</tr>
<tr>
<span class="number">78. </span>KHAO PHAD SABPAROD
<span class="price">£9.95</span>
</tr>
HTML;
echo preg_replace('#<tr>((?:(?!</tr>).|[\r\n])*<span[^>]*>(?:.|[\r\n])*?)</tr>#s', '<dt>$1</dt>', $input);