2010-09-07 8 views
7

Witam Używam następującego kodu, ale otrzymuję "nieoczekiwany błąd składni T_FUNCTION" dla drugiej linii. Jakieś sugestie?

preg_replace_callback("/\\[LINK\=(.*?)\\\](.*?)\\[\/LINK\\]/is", 
function (array $matches) { 
    if (filter_var($matches[1], FILTER_VALIDATE_URL)) 
     return '<a href="'. 
      htmlspecialchars($matches[1], ENT_QUOTES). 
      '" target="_blank">'. 
      htmlspecialchars($matches[2])."</a>"; 
    else 
     return "INVALID MARKUP"; 
}, $text); 
+0

Czy Twoja wersja wsparcia dla PHP jest zamknięta? –

+0

@ Mike B. Używam PHP 5.2, więc domyślam się, że nie. – Mike

+3

Potrzebujesz co najmniej php 5.3: http://php.net/manual/en/functions.anonymous.php – jigfox

Odpowiedz

20

To się dzieje, gdy twój PHP jest starszy niż 5.3. Obsługa funkcji anonimowych była niedostępna do 5.3, więc PHP nie rozpozna sygnatur funkcji przekazanych jako takie parametry.

Musisz utworzyć funkcję w tradycyjny sposób, i przekazać jej nazwę zamiast (używam link_code() na przykład):

function link_code(array $matches) { 
    if (filter_var($matches[1], FILTER_VALIDATE_URL)) 
     return '<a href="'. 
      htmlspecialchars($matches[1], ENT_QUOTES). 
      '" target="_blank">'. 
      htmlspecialchars($matches[2])."</a>"; 
    else 
     return "INVALID MARKUP"; 
} 

preg_replace_callback("/\\[LINK\=(.*?)\\\](.*?)\\[\/LINK\\]/is", 'link_code', $text); 

Również array $matches nie jest problemem, ponieważ typ podpowiedzi dla tablic jest obsługiwana w PHP 5.2.

+0

Doskonale, dzięki. – Mike

Powiązane problemy