我正在尝试从WP帖子中获取所有图像,以便从中创建幻灯片。谷歌搜索并找到这段代码来检索和显示帖子中的图像:
function getImage($num) {
global $more;
$more = 1;
$link = get_permalink();
$content = get_the_content();
$count = substr_count($content, '<img');
$start = 0;
for($i=1;$i<=$count;$i++) {
$imgBeg = strpos($content, '<img', $start);
$post = substr($content, $imgBeg);
$imgEnd = strpos($post, '>');
$postOutput = substr($post, 0, $imgEnd+1);
$postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);;
$image[$i] = $postOutput;
$start=$imgEnd+1;
}
if(stristr($image[$num],'<img')) { echo '<a href="'.$link.'">'.$image[$num]."</a>"; }
$more = 0;
}
你可以想象你然后使用getImage('1')等从帖子中获取第1张,第2张图片等。这不是制作幻灯片的理想选择,因为我不知道会有多少张图片是
有没有办法修改上面的代码来获取用于创建foreach循环的图像数组?对不起,如果我的逻辑有点瑕疵,我不是PHP专家,你可能已经猜到了。
提前感谢您的帮助。
答案 0 :(得分:2)
此代码已找到所有图像,但只打印出1。
尝试这种变体,它应该回显所有图像,而不仅仅是1.我没有测试过这个,但是如果原始代码有效,那就应该这样。
function getImage() {
global $more;
$more = 1;
$link = get_permalink();
$content = get_the_content();
$count = substr_count($content, '<img');
$start = 0;
for($i=1;$i<=$count;$i++) {
$imgBeg = strpos($content, '<img', $start);
$post = substr($content, $imgBeg);
$imgEnd = strpos($post, '>');
$postOutput = substr($post, 0, $imgEnd+1);
$postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);;
if(stristr($postOutput,'<img')) { echo '<a href="'.$link.'">'.$postOutput."</a>"; }
$start=$imgEnd+1;
}
$more = 0;
}
还可以对此代码进行更多清理,但我只修改了您的内容。
答案 1 :(得分:1)
代码中的代码稍有变化$ imgBeg代替$ imgEnd然后它工作正常
function getImage() {
global $more;
$more = 1;
$link = get_permalink();
$content = get_the_content();
$count = substr_count($content, '<img');
$start = 0;
for($i=1;$i<=$count;$i++) {
$imgBeg = strpos($content, '<img', $start);
$post = substr($content, $imgBeg);
$imgEnd = strpos($post, '>');
$postOutput = substr($post, 0, $imgEnd+1);
$postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);;
if(stristr($postOutput,'<img')) { echo '<a href="'.$link.'">'.$postOutput."</a>"; }
$start=$imgBeg+1;
}
$more = 0;
}