0

我不确定这是否仅适用于preg_replace功能,但我只想获取第一张图像并忽略所有其他图像。

此代码排除了我要显示的文本中的所有图像,但我只需要获取第一张图像。

if (!$params->get('image')) {
    $item->introtext = preg_replace('/<img[^>]*>/', '', $item->introtext);
}

你能指出我实现这一目标的正确方向吗?


编辑 :

似乎使用该limit属性是不够的,因为我不想跳过第一张图像并保留剩余的图像。我需要相反:保留第一张图像并替换所有其他图像。

4

1 回答 1

3

您可以使用preg_replace_callback来完成此操作。此函数将执行您作为参数传递的回调函数,该函数将为它在原始字符串中找到的每个匹配项返回一个替换字符串。

在这种情况下,我们将在第一次出现时返回自己的匹配项,因此它不会被替换。

$i = 0;
$item->introtext = preg_replace_callback('/<img[^>]*>/', function($match) use (&$i) {
    if ($i++ == 0) // compares $i to 0 and then increment it
        return $match[0]; // if $i is equal to 0, return the own match

    return ''; // otherwise, return an empty string to replace your match
}, $item->introtext);
于 2013-11-05T16:18:52.557 回答