Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Preg_replace i błąd
Forum PHP.pl > Forum > PHP
Dawid_
Witam. Pisałem na innych forach, ale nie wiedzą gdzie tkwi błąd.

  1. <?php
  2. $where=preg_replace( '/(.*)/eiU', "'<a href='.(strpos('$1', 'http://') !== 0) ? 'http://$1' : $1.'>'.(strlen('$1')>20) ? substr('$1',0,10).'(...)'.substr('$1',-10).'</a>'", $where);
  3. ?>


Nie działa to jak należy, bowiem wyskakuje błąd:

Parse error: syntax error, unexpected T_FUNCTION in /home/accounts_m/maks/public_html/r+/conf.php(83) : regexp code on line 1

Fatal error: preg_replace(): Failed evaluating code (...) /home/accounts_m/maks/public_html/r+/conf.php on line 83

Oczekuje na odpowiedź. Pozdrawiam
TomASS
U mnie kod:
  1. <?php
  2. $where=preg_replace( '/(.*)/eiU', "'<a href='.(strpos('$1', 'http://') !== 0) ? 'http://$1' : $1.'>'.(strlen('$1')>20) ? substr('$1',0,10).'(...)'.substr('$1',-10).'</a>'", $where);
  3. ?>

nie protestuje.

Wpisz:
  1. <?
  2. ?>

i sprawdź czy PCRE (Perl Compatible Regular Expressions) Support jest włączone (Enable).

Dodatkowo sprawdź wersję php, jeśli masz php 3 < 3.0.9, funkcja ta nie będzie działać.
Dawid_
php Version 4.4.2
I mam włączone pcre
Aure
Spróbuj tak:
  1. <?php
  2. $where=preg_replace( '/(.*)/eiU', "'<a href='.(strpos('$1', 'http://') !== 0) ? 'http://$1' : '$1>'.(strlen('$1')>20) ? substr('$1',0,10).'(...)'.substr('$1',-10).'</a>'", $where);
  3. ?>
Dawid_
Efekt:

Parse error: syntax error, unexpected ';' in /home/accounts_m/maks/public_html/r+/conf.php(97) : regexp code on line 1

Fatal error: preg_replace(): Failed evaluating code: '&lt;a href='.(strpos('php.net.pl/manual/pl/function.substr.php', 'http://') !== 0) ? 'http://php.net.pl/manual/pl/function.substr.php' : 'php.net.pl/manual/pl/function.substr.php&gt;'.(strlen('php.net.pl/manual/pl/function.substr.php')&gt;20) ? substr('php.net.pl/manual/pl/function.substr.php',0,10).'(...)'.substr('php.net.pl/manual/pl/function.substr.php',-10).'&lt;/a&gt;' in /home/accounts_m/maks/public_html/r+/conf.php on line 97
Aure
Teraz powinno działać prawidłowo:

  1. <?php
  2. $where=preg_replace( '/(.*)/eiU', "'<a href=' . ( (strpos('$1', 'http://') !== 0) ? 'http://$1' : '$1>' ) . ( (strlen('$1')>20) ? substr('$1',0,10).'(...)'.substr('$1',-10) : '$1' ) . '</a>'", $where);
  3. ?>

A na przyszłość polecam używania nawiasów do polepszenia czytelności kodu smile.gif
Dawid_
Dziękuje smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.