2010-12-15 6 views
7
'<a rel="nofollow" href="$1" class="bbc_link new_win" target="_blank">' 

나는 urlencode() 기능을 사용하고 싶은 :문자열 내부에서 함수를 사용하는 방법은 무엇입니까?

'<a rel="nofollow" href="urlencode($1)" class="bbc_link new_win" target="_blank">' 

을 ...하지만이 사용할 수 없습니다 $1 문자열에서 변수가 아니기 때문에 ...

'<a rel="nofollow" href="'.urlencode($1).'" class="bbc_link new_win" target="_blank">' 

을 ; 그것은 대신 간단한 무료 포럼에서 메타 변수입니다.

그것은 당신이 할 수없는 http://www.test.com/out.php?out=http://www.example.com

답변

2

보냅니다. 당신은 생성 나이 없습니다 당신이 그것을에 액세스 할 수없는이 템플릿에서이 문자열 대체 어디에 값을 인코딩 할 필요가있다.

2

방금 ​​string parsing section of the PHP manual을 검토했으며 따옴표로 묶은 문자열 (변수 이름을 동적으로 할당하는 경우 제외)에서 함수를 호출하는 방법이없는 것 같습니다. 죄송합니다.

0

당신은 당신의 템플릿 엔진은이 기능을 지원하기 위해 어떻게 작동하는지 확장해야합니다. PHP로 만들 수있는 방법이 없습니다.

3

이 작업을 수행하지만, 내 충고를 받아 들여 그것을 사용하지 않는 방법이있다. 문자열 내에서 함수 호출을 사용하면 안됩니다. 그러나 마커스는 PHP의 능력이 무엇인지 보여주기 위해 예를 게시 할 수 있습니다.

하지만이 BAD PROGRAMMING OF SAMPLE 극단적 인 !!!!

<?php 
class FunctionAgent{ 
    public function __call($name,$args){ 
     switch (count($args)){ 
      case 0: 
       return $name(); 
       break; 
      case 1: 
       return $name($args[0]); 
       break; 
      case 2: 
       return $name($args[0],$args[1]); 
       break; 
      case 3: 
       return $name($args[0],$args[1],$args[2]); 
       break; 
      case 4: 
       return $name($args[0],$args[1],$args[2],$args[3]); 
       break; 
      case 5: 
       return $name($args[0],$args[1],$args[2],$args[3],$args[4]); 
       break; 
     } 
    } 
} 

$_ = new FunctionAgent(); 
echo "the current date is {$_->date("y-m-d")}"; 

?> 
+0

귀하의 경고는 내 직감을 반영합니다. 그러나 이것이 실제로 내가 할 수있는 유일한 문제는 익숙하지 않은 관례라는 것입니다. 클래스/객체는 실제로 [나쁜 습관]입니다 (http://en.wikipedia.org/wiki/Poltergeist_ (computer_science)) - OOP 컨텍스트에서 _. 'FunctionAgent'가 개발자의 삶을 편하게 해준다면 (그리고 스크립트 실행 시간이 밀리 세컨드 (millisecond)) 걱정되지 않는다면, 왜 사용하지 않을까요? –

+1

내 황금률은 @smhmic : 사람들이 기대 또는 verbosly을 문서화 무엇에 충실. 자신이하고있는 일, 왜 그 일을하고있는 이유, 그리고 "깨끗한"행동으로 당신이 고려하고 해산 한 접근에 대해 깊이있는 설명을 써야한다면 "규칙"을 얼마나 희박하게하는지 매우 흥미 롭습니다. 하지만이 3 살짜리 코드를 보면'call_user_func'을 사용해야한다는 것을 알았습니다. –

6

어째서이 미친 핵?

<? 
$_ = 'urlencode'; 
echo "<a rel=\"nofollow\" href=\"{$_($1)}\" class=\"bbc_link new_win\" target=\"_blank\">"; 
3

체크 아웃이 트릭은 :

function foo() { return "title"; } 

$func = function($param) { return $param; }; 

$link = 'http://www.test.com/out.php?out=http://www.example.com'; 
echo "<a rel=\"nofollow\" href=\"{$func(urlencode($link))}\" class=\"bbc_link new_win\" target=\"_blank\">{$func(foo())}</a>"; 

$func()는 함수로 호출 할 것이며, 괄호 안의 표현은 다른 PHP 코드로 평가됩니다.

hack is found here

관련 문제