PHP ООП, вызывающий метод в функции preg_replace - PullRequest
0 голосов
/ 09 марта 2012

Я хочу сделать упоминания, похожие на Twitter, но для профилей пользователей я использую идентификатор, а не userNames, поэтому я создаю функцию, которая получает UserID на основе userName и в процедурном коде работает, но в настоящее время не работает ..

$title = ' Hey @Stackoverflow can u help me ?';

$mentions = (preg_replace("/\@([a-zA-Z0-9\-_]{3,30})/e", 
    "'<a href=\"http://mySite.com/user:'.$this->mentionName('$1').
'\">@$1</a>'",$title));

ожидаемый результат URL

http://mySite.com/user:1

непредвиденный результат

http://mySite.com/user:Stackoverflow

// Это цикл не одинстрока

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Вы не можете этого сделать.

Изучите функцию preg_replace_callback или присвойте соответствие другой переменной и используйте ее для функции класса.

0 голосов
/ 09 марта 2012

Если вы хотите использовать preg_replace в сочетании с функцией, которая оценивает результат и изменяет его, используйте preg_replace_callback

http://php.net/manual/en/function.preg-replace-callback.php

function returnUser($matches){
    return $this->mentionName($matches[1]);
}

$mentions = preg_replace_callback("/\@([a-zA-Z0-9\-_]{3,30})/e", "returnUser",$title));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...