Въпрос за ereg_replace и urlencode

sed

Registered
Здравейте! искам функция, която да ми връща точно определен стринг, в който само това, което е между v= и &f да бъде с премахнато http:// и заградено в urlencode. С долният пример се справих перфектно с първата задача.
$url="http://myfile.com/dada.php";
$text="b=$url&fms=&app= - не трябва да използва функцията<br>v=$url&f - ТРЯБВА да използва функцията<br>v=$url&r - не трябва да използва функцията";
$text = ereg_replace('v=[a-zA-Z]+://(([.]?[a-zA-Z0-9_/-])*)&f', 'v=\\1&f', $text);
print("$text");
и правилно ми отпечата
b=http://myfile.com/dada.php&fms=&app= - не трябва да използва функцията
v=myfile.com/dada.php&f - ТРЯБВА да използва функцията
v=http://myfile.com/dada.php&r - не трябва да използва функцията
но след това се опитах да добавя urlencode така:
$url="http://myfile.com/dada.php";
$text="b=$url&fms=&app= - не трябва да използва функцията<br>v=$url&f - ТРЯБВА да използва функцията<br>v=$url&r - не трябва да използва функцията";
$text = ereg_replace('v=[a-zA-Z]+://(([.]?[a-zA-Z0-9_/-])*)&f', "v=".urlencode('\\1')."&f", $text);
print("$text");
но ми отпечата:
b=http://myfile.com/dada.php&fms=&app= - не трябва да използва функцията
v=%5C1&f - ТРЯБВА да използва функцията
v=http://myfile.com/dada.php&r - не трябва да използва функцията
използва я и преобразува urlencode на стринга \\1.

Въпросът ми е: Как да използвам функцията, за да върне този резултат:
b=http://myfile.com/dada.php&fms=&app= - не трябва да използва функцията
v=myfile.com%2Fdada.php&f - ТРЯБВА да използва функцията
v=http://myfile.com/dada.php&r - не трябва да използва функцията
Разбира се, ако $url е по-сложно, то тази функция ще си приложи urlencode.

P.S. Използвам цитати, защото /code/ не позволява да показвам в червено какво съм променил.
 
relax каза:
Код:
urlencode("/")

това добави

Извинявай, но може би не се изразих правилно! Говорим urlencode да се прилага само за въпросния стринг, а не за всички.

$url="http://myfile.com/dada.php";
$text="b=$url&fms=&app= - не трябва да използва функцията<br>v=$url&fms=&app= - ТРЯБВА да използва функцията<br>v=$url&r - не трябва да използва функцията";
$text = ereg_replace('v=[a-zA-Z]+://(([.]?[a-zA-Z0-9_/-])*)&fms=&app=', 'urlencode("/\\1")', $text);
print("$text");
Опитах така и пак не става. Иначе \\1 връща стринга (в случая myfile.com/dada.php) и искам само на това място да се промени! Иначе много благодаря за светкавичния отговор!
 

Back
Горе