обоснуй(те). кому лучше и чем лучше?..
тогда уж не "от htaccess отказываться", а весь апач сносить нафиг 🙅 если vps-ка хотя бы. и это будет ооочень верным выбором...
а сами как думаете что быстрее: редирект на уровне апача или на уровне php ?
RewriteRule ^(.*)$ /id-%1.html? [R=301,L]
был опыт со SkyLink, и у нескольких знакомых тоже.
когда SkyLink поднял в очередной раза и так не мальнькую абонентскую плату за "прямой" номер, народ со спокойной совестью стал стадно забивать на его услуги, ибо услуги то по предоплате, так что вроде бы не оплатил аб. плату -> не получил связь -> разбежались. мало кто заморачивался звонить и блокировать заведомо неработающий номер.
но хрена лысого, как оказалось, где то в договоре (мелким шрифтом?) было написано что то вроде "аб. плата взымается на всё время действия договора", т.е. вне зависимости обеспечивает оператор связь или нет: договор подписал - платить должен.
SkyLink эти идиотские долги продал каким то пермским коллекторам и стали приходить огромные конверты от "службы приставов".
слегка огорчительно, но всё бодро литело в мусор. через пол года успокоились...
должно.
1. исправьте if
2. идите поэтапно - сначала отладьте работу ob_, потом работу str_replace
видимо что то вроде:
echo str_replace( 'width="100"', 'width="185", height="262"', $str );
если width="100" встречается только там где нужно менять. если ещё где, то prеg_replace нужен...
---
только зря у Вас ob_get_clean() стоит в if : как бы там что в скрипте не случилось вывод в буфер ob_ надо отменять в любом случае. видимо в этот if надо результирующее echo вставить.
ob_start - This function will turn output buffering on. While output buffering is active no output is sent from the script (other than headers), instead the output is stored in an internal buffer : перенаправляет вывод php в свой буфер.
ob_get_clean - Get current buffer contents and delete current output buffer : возвращает то что туда накидал php и восстанавливает обычный вывод
т.е. вы на время заставляете php сливать всё "мимо экрана" в некий буфер, потом восстанавливаете вывод "на экран", отлавливаете то что слилось в буфер, обрабатываете и выводите "на экран"...
в примитиве типо так:
ob_start(); ... вызов скрипта ... $str = ob_get_clean(); ... обработка $str ... echo $str;
конечно можно, но это как бе паллиатив, средствами php такие фичи не сложнее. освойте один раз ob_* ооочень пригодится...