[請益] 關於getimagesize()

看板PHP作者 (九月二號)時間16年前 (2009/12/12 21:14), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
我在做把BBCODE中的[img]http://www.XXX.XXX/XXX.jpg[/img] 轉換成<img src="" rel="nofollow">http://www.XXX.XXX/XXX.jpg"> 這本來是不難 我的做法是preg_replace('/\[img\](.*?)\[\/img\]/is','<img src="$1">', $string); 可是考慮到,想要加入長和寬的限制<img src="$1" width="$w" height="$h"> 於是從php.net上看到了這個範例 function scaleimage($location, $maxw=NULL, $maxh=NULL){ $img = @getimagesize($location); if($img){ $w = $img[0]; $h = $img[1]; $dim = array('w','h'); foreach($dim AS $val){ $max = "max{$val}"; if(${$val} > ${$max} && ${$max}){ $alt = ($val == 'w') ? 'h' : 'w'; $ratio = ${$alt} / ${$val}; ${$val} = ${$max}; ${$alt} = ${$val} * $ratio; } } return("<img src='{$location}' alt='image' width='{$w}' height='{$h}' />"); } } 於是把preg_replace的部份改成了 preg_replace('/\[img\](.*?)\[\/img\]/is',"scaleimage($1,640,480)", $string) 但是輸出的結果,都是"scaleimage(http://www.XXX.XXX/XXX.jpg,640,480)" 而沒法取到scaleimage的結果出來 是我那裏寫錯了嗎?preg_replace中的第二個參數,應該也是可以用函數的啊? 盼高手解惑,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.191.216

12/12 21:46, , 1F
標題不切合說,問題在 RexExp /../is 這邊修飾子要加上e
12/12 21:46, 1F

12/12 21:47, , 2F
請見 PHP Manual preg_replace 函式說明 Example #4
12/12 21:47, 2F

12/12 22:16, , 3F
正常了,大感謝
12/12 22:16, 3F
文章代碼(AID): #1B8vT8DH (PHP)
文章代碼(AID): #1B8vT8DH (PHP)