ugrás a tartalomhoz

Archívum - Dec 4, 2018

Dátum
  • Minden
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

Kép felbontása alapján változó "class" elem

athlonator · Dec. 4. (K), 18.02
Üdv.

Van egy adatbázisom, benne egy cikkek nevezetű tábla. A táblából kiolvasom az adatokat, amik a '$text' változóban rögzülnek,
Ezt vizsgálja a preg_replace, es keresi meg a képhivatkozásokat (<img>), hogy aztán ebből egy linket csináljon a kép címével, és a képnézegető várt class elemeivel. Szeretnén hogy az adott fv-be beszúrni egy feltételt, a kép felbontására vonatkozólag, vagy az is jó, ha a könyvtárat vizsgálja. De elég lenne csak annyi, hogy ezeket a kis képeket ne alakítsa át a függvényem hivatkozássà. Sőt, ez lenne a legjobb.
Hogyan tudnám átvariálni a kódom?
Előre is köszönöm a segítségeteket.

function callbackFunction($matches)
{
$subPattern = '/(?<name>\w+)\s*=\s*(['"])(?<value>[^\2]*?)\2/is';
$resultPattern = '<a data-title="%s" class="example-image-link" data-lightbox="example-set" href="%s">%s</a>';

$title = "";
$href = "";
if (preg_match_all($subPattern, $matches[1], $subMatches))
{
foreach ($subMatches['name'] as $idx => $name)
{
switch (strtolower($name))
{
case "alt":
$title = $subMatches['value'][$idx];
break;
case "src":
$parts = explode("/", $subMatches['value'][$idx]);
$last = array_pop($parts);
array_push($parts, $last);
$href = implode("/", $parts);
break;
}
}
if ($href)
{
return sprintf($resultPattern, $title, $href, $matches[0]);
}
else
{
return $matches[0];
}
}

else
{
return $matches[0];
}
}

$pattern = '/<img\s+([^>]+)\/?>/is';

$text = preg_replace_callback($pattern, 'callbackFunction', $text);?>
<div class="text"> <?echo $text?></div>