|
|
ВНИМАНИЕ: Използвайте форумите на сайта за дa зададете вашите въпроси.
Въпрос |
От: mx_starter |
Дата: 06/30/2005 |
Хич ме няма в regular expessions, затова ще помоля за малко
помощ:
Имам следния текст от HTML сорс и искам всички пътища до
КАРТИНКИТЕ да станат абсолютни:
--
<img width="10" height="10"
src="/directory/image_name_1.gif">
<img src="/directory/image_name_2.gif" width="15"
height="15">
<img alt="img3" src="directory/image_name_3.gif">
<iframe src="http://www.domain.com">
--
например - първия ред да стане:
<img width="10" height="10"
src="http://www.domain.tld/directory/image_n...
Как да го направя с eregi_replace от РНР?
Текстът може да съдържа произволен брой <img> тагове - а
също така може и да съдържа картинки с абсолютни пътища,
които не бива да се пипат?
Някакви предложения?
|
Отговор #2 |
От: mx_starter |
Дата: 07/01/2005 |
Зарежи в такъв случай...
То сигурно и Web Development секцията във форума няма нищо
общо с Линукс по твоята логика.
Извинявай че ти загубих времето.
Баста.
|
Отговор #3 |
От: slave |
Дата: 07/01/2005 |
$fp = fopen("index.html","r");
$tmp = fopen("index1.html","w");
/* измисли си как да ти взема URL-to от iframe, за да не е
статично зададено */
$web = 'src="http://www.domain.com';
$patten = 'src="';
while(!feof($fp))
{
$str = fgets($fp);
if(eregi("img",$str)
{
$str = eregi_replace($patten,$replace,$str);
}
fputs($tmp,$str);
}
fclose($fp);
fclose($tmp);
Извинявам се ако има грешки и сигурно има какво да му се
оптимизира за да работи по-добре за конкретния случай. Срещу
една скромна сума може да се направи нещо по въпроса.
|
Отговор #4 |
От: mx_starter |
Дата: 07/01/2005 |
Благодаря, Slave - само че вече съм минал по този път и
търсех нещо по-универсално :-))
Така направено както си го написал, няма да работи винаги -
защото проверяваш ред по ред и ако например един ред отваря
<img таг-а, а 'src=' е на следващия ред - тогава ще го
пропуснеш.
Аз между другото си реших проблема, макар и по заобиколен
начин. Но ми е интересно как да направя следното:
в примера отгоре имам 3 тага <img и също толкова 'src='.
В такъв случай израза:
eregi_replace("<img.*src=", \\0http://www.domain.com, $str)
ще прихване всичко от първия <img таг до последното срещане
на 'src=' - i saotvetno ste dobavi URL-a samo na poslednoto
srestane na SRC=.
Taka che na men mi triabva regexp, koito da tursi v stringa
chasti zapochvasti s '<img', zavursvasti na 'src=' i NE
SADURZASTI drugo '<img' po sredata.
Togava spored men ste sraboti kakto triabva - no ne znam
kak
da zabrania v izraza turseneto na vtoro srestane na '<img'
v otriazaka.
Nadiavam se go obiasnix kakto triabva?
|
Отговор #5 |
От: slave |
Дата: 07/01/2005 |
Държиш ли да е на PHP ?
С perl мисля, че по-лесно ще стане.
|
Отговор #6 |
От: mx_starter |
Дата: 07/01/2005 |
Да, трябва ми РНР - но както казах, реших си проблема по
друг начин (също с РНР)- макар да ми се иска да стане по
елегантно.
Просто би било полезно да се изнамери шаблона, който би
решил задачата на един ред :-))
Още веднъж ти благодаря.
|
<< ПОПРАВКА НА Gnu Linux ??? (2
) | A-OPEN notebook и LINUX (0
) >>
|
|
|
|
|