Это должно быть немного более общим - не важно, что находится внутри html-тегов. Он работает по всем трем ссылкам, которые вы указали.
/Mileage[^<]*<[^>]*><[^>]*>(.*?)\s*miles/i
Конечно, могут быть лучшие способы, в зависимости от того, какие у вас есть другие ограничения, но это хорошая отправная точка.
Распознав дублирование, вы могли бы упростить (по крайней мере, логически) немного больше:
/Mileage[^<]*(?:<[^>]*>){2}(.*?)\s*miles/i
Вы ищете два html-тега подряд между словами «Пробег» и «мили». Это часть (?:<[^>]*>){2}
. ?:
говорит ему не запоминать эту последовательность, так что $matches[1]
все еще содержит искомое число, а {2}
указывает, что вы хотите точно соответствовать предыдущей последовательности дважды.