preg_replace въпрос

kriss

Registered
Код:
$text =preg_replace("/\[img\](.+?)\[\/img\]/s", '<img src="$1">',$text);
това ми е за bbcode-а, но примерно когато изображението е по-голямо от 500px, как да задам да има width="500px"? :)
 
<?php
$text = "<img src='body.jpg' alt='' border='0' />";
preg_match("/src=[\'\"]{1}(.*?)[\'\"]{1}/", $text, $matches);
$image = getimagesize($matches[1]);
if($image[0]>=500){
$text =preg_replace("/\[img\](.+?)\[\/img\]/s", '<img src="$1" width="500">',$text);
} else {
$text =preg_replace("/\[img\](.+?)\[\/img\]/s", '<img src="$1">',$text);
}
?>
 
Най-правилния вариант е:
<?php
$text = "
";

preg_match("/\[img\](.+?)\[\/img\]/si", $text, $matches);
$image = getimagesize($matches[1]);
if($image[0]>=500){
$text =preg_replace("/\[img\](.+?)\[\/img\]/s", '<img src="$1" width="500" />',$text);
} else {
$text =preg_replace("/\[img\](.+?)\[\/img\]/s", '<img src="$1" />',$text);
}
echo $text;
?>
 
По този начин не удачно да се прави BBCode, но ще направя изклчение
Ето и моя вариянт за повече от единпът писане на тага IMG
Код:
function tagimg($m)
{
   $m[1] = str_replace(' ', '%20', $m[1]);
    if ($size = @getimagesize($m[1]))
    {
        list($width, $height) = $size;
       $width = ($width > 500) ? 500 : $width;
       return '<img src="' . $m[1] . '" width="' . $width . '" height="' . $height . '" border="0" />';
     }
  return $m[0];
}
$text = preg_replace_callback('/\[img\](?!.*?\[img\].*?)(.*?)\[\/img\]/i', 'tagimg', $text);
 
emagi каза:
Най-правилния вариант е:
<?php
$text = "
";

preg_match("/\[img\](.+?)\[\/img\]/si", $text, $matches);
$image = getimagesize($matches[1]);
if($image[0]>=500){
$text =preg_replace("/\[img\](.+?)\[\/img\]/s", '<img src="$1" width="500" />',$text);
} else {
$text =preg_replace("/\[img\](.+?)\[\/img\]/s", '<img src="$1" />',$text);
}
echo $text;
?>
sry за забавения отговор, но това е идеално(как не се сетих не знам), давам ти 1005-тата точка :)
 

Back
Горе