есть функция profile_name(); которая возвращает имя профиля по его id
$ret = preg_replace("#http:\/\/192\.168\.0\.102\/profile\.php\?id=(.*?)(\s|&|\/|$)#is","$1" ,$ret);
//выводит только id вместо ссылки
$ret = preg_replace("#http:\/\/192\.168\.0\.102\/profile\.php\?id=(.*?)(\s|&|\/|$)#is",profile_name("$1") ,$ret);
//нечего не выводит =(
надеюсь понятно в чем моя проблема, я не могу из передать функции параметр взятый из регулярки?
как это обойти?
учитывая то что у меня может быть несколько ссылок на профилей в одном комменте...
Спустя 1 день, 17 часов, 41 секунда (9.03.2011 - 10:53) gaserge написал(а):
если функция работает то так должно быть:
(сори за повтор сообщения)
(сори за повтор сообщения)
Спустя 9 минут, 38 секунд (9.03.2011 - 11:03) gaserge написал(а):
$ret = preg_replace("#http:\/\/192\.168\.0\.102\/profile\.php\?id=(.*?)(\s|&|\/|$)#ise", "profile_name($1)", $ret);
вот так попробуй
Спустя 3 часа, 48 минут, 23 секунды (9.03.2011 - 14:51) kodemak написал(а):
Цитата (gaserge @ 9.03.2011 - 08:03) |
$ret = preg_replace("#http:\/\/192\.168\.0\.102\/profile\.php\?id=(.*?)(\s|&|\/|$)#ise", "profile_name()", $ret); вот так попробуй |
Нет, так не выходит
неужели это нерешаемая проблема?
Спустя 6 минут, 4 секунды (9.03.2011 - 14:57) DedMorozzz написал(а):
$ret = preg_replace("#http:\/\/192\.168\.0\.102\/profile\.php\?id=(.*?)(\s|&|\/|$)#is",profile_name('$1') ,$ret);
кавычки одинарные
Пример:
$a = "zz 22";
$a = preg_replace("(22)",base64_encode('$1'),$a);
echo $a;//zz JDE=
Спустя 1 час, 28 минут, 18 секунд (9.03.2011 - 16:26) kodemak написал(а):
столкнулся еще с одной проблемой, я получаю текстовую переменную а функция profile_name(); работает только с цифровыми, как мне получить из текстовой цифровую переменную?
Спустя 3 минуты, 6 секунд (9.03.2011 - 16:29) gaserge написал(а):
intval()
Спустя 29 минут, 9 секунд (9.03.2011 - 16:58) kodemak написал(а):
все предельно четко и понятно, но почему - то не работает =(
я для проверки все убрал и создал новую функцию
я для проверки все убрал и создал новую функцию
function username($userid){
return intval($userid);//не работает выводит - 0
return intval('2')*2;//выводит 4
return $userid;//выводит но нужно цифровую пременную =(
return $userid;//тоже выводит 0
}
$ret = preg_replace("#http:\/\/192\.168\.0\.102\/profile\.php\?id=(.*?)(\s|&|\/|$)#is",username('$1'),$ret);//id
Спустя 1 час, 20 минут, 57 секунд (9.03.2011 - 18:19) gaserge написал(а):
$ret = preg_replace("#http:\/\/192\.168\.0\.102\/profile\.php\?id=(.*?)(\s|&|\/|$)#ise", "username('$1')",$ret); //id
- так у меня работает.
DedMorozzz,
я конечно новичек в пхп, но вроде модификатор e - запускает выполнения кода username($1) - который нужно обносить ковычками.
Спустя 17 минут, 14 секунд (9.03.2011 - 18:36) inpost написал(а):
kodemak
username('$1') - правильно, ты текст передаёшь, а не переменную! Переменную передают так: username($1)
username('$1') - правильно, ты текст передаёшь, а не переменную! Переменную передают так: username($1)
Спустя 2 часа, 15 минут, 43 секунды (9.03.2011 - 20:52) kodemak написал(а):
С этим все понятно, но я не могу просто так запустить, мою функцию так как я передаю в нее не переменную а текст, intval(); превращает мой текстовый id в ноль
Спустя 1 час, 3 минуты, 23 секунды (9.03.2011 - 21:55) gaserge написал(а):
у меня все работает.
Спустя 18 часов, 18 минут, 45 секунд (10.03.2011 - 16:14) kodemak написал(а):
<?php
function name($id){
return " (".intval($id)." / ".$id.") ";
}
$text = "text http://192.168.0.102/profile.php?id=2 text http://192.168.0.102/profile.php?id=3 text";
$text = preg_replace("#http:\/\/192\.168\.0\.102\/profile\.php\?id=(.*?)(\s|&|\/|$)#is",name('$1'),$text);
echo $text;// text (0 / 2) text (0 / 3) text
?>
выводит text (0 / 2) text (0 / 3) text
а должно выводить text (2 / 2) text (2 / 3) text
почему не так?
Спустя 4 минуты, 57 секунд (10.03.2011 - 16:19) Trianon написал(а):
Что-то не так у Вас там явно.
поглядите, что такая покажет.
function name($id){
return " (".intval($id)." / ". bin2hex($id).") ";
}
поглядите, что такая покажет.
Спустя 41 минута, 56 секунд (10.03.2011 - 17:01) kodemak написал(а):
text (0 / 2431) text (0 / 2431) text =(
мне главное чтобы с той переменной которую я вытаскиваю, я мог производить математические вычисления
мне главное чтобы с той переменной которую я вытаскиваю, я мог производить математические вычисления
Спустя 4 часа, 36 минут, 16 секунд (10.03.2011 - 21:37) gaserge написал(а):
еклмн, ты мой код пробовал?
все работает
function username($userid){
return intval($userid)*2;
}
$ret = "http://192.168.0.102/profile.php?id=123456";
$ret = preg_replace("#http:\/\/192\.168\.0\.102\/profile\.php\?id=(.*?)(\s|&|\/|$)#ise", "username('$1')",$ret);//id
echo $ret;
все работает