Опитвам се да извлича конкретен образец на 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]);