/ / Regex за извличане на определени URL адреси от <img> маркери в HTML документ - php, html, regex, pattern-matching

Regex за извличане на конкретни URL адреси от маркерите <img> в HTML документ - php, html, regex, съвпадение на шаблони

Опитвам се да извлича конкретен образец на URL адресот тялото на някакво съдържание и да го замени с новообразуван URL. Но аз съм се сблъскват с проблеми с моите regex модели и исках да видя дали може да ми помогне.

Ето кода, който тествам с:

$body = "<p><img src="/images//file/637/view" height="540" width="640"></p>";
$pattern = "/src="/file/(0-9)+/view"/";
$pattern = "/src="/file/(.)+/view"/";
$pattern = "/"/file/[0-9]+/view"";
$pattern = "/<img src="/images/(.)+"(.)+">/";

preg_match($pattern, $body, $matches);

Сега последният модел ще вземе цялатаизображение, което е страхотно, но това, което искам, е да извлече всички URL адреси на изображения (само URL), които използват шаблона "/ file / (some number) / view", за да мога да създавам нови URL адреси и след това да правя низ на тях. Всички останали не успяват да намерят нищо, когато стартирам print_r на $ matches var.

Очевидно нивото на тялото представлява съдържаниетотяло, което аз сканирам за това. Всички предложения за това как да се получи това да работи и вземете само образа URL? Това ще трябва да работи за ситуации с множество изображения, смесени с много други html, включително анкерни тагове.

Отговори:

1 за отговор № 1

опитайте се да го замените (.) с (.*?) или за вашия проблем, опитайте да следвате

$body = "<p><img src="/images//file/637/view" height="540" width="640"></p>";
$pattern = "//file/([0-9]+)/view/";


preg_match($pattern, $body, $matches);

0 за отговор № 2

Трябва да избягаш от наклонени черти, мисля, че там имаш ненабелязани наклонени черти

Опитайте тази:

$body = "<p><img src="/images//file/637/view" height="540" width="640"></p>";
$pattern = "/<img src="/images//file/([0-9]+)/view"/"

preg_match($pattern, $body, $matches);

echo ($matches[1]);