Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in
lolo121
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 28.09.2014

Ostrzeżenie: (0%)
-----


hejka. otoz zainstalowalem xampp i zainstalowalem swój autorski skrypt forum. porzuciłem projekt juz dobry czas temu i teraz postanowilem go wznosic. wiedza na ten temat juz spadla. po instalacji forum w wyswietleniu posta pokazuje mi sie nad nim

(IMG:http://iv.pl/images/74640070925224360360.png)

z tego rozumiem, ze funkcja preg_replace() jest przestarzala i trzeba ją zastapic funkcją preg_replace_callback. po zastąpieniu jednak występują kolejne błędy. o to fragment kodu powodujący błędy (wrzuciłbym cały plik, ale za długi post...)

Cytat
// Preappend http:// to url address if not present
$s = preg_replace('/\[url\=([^(http)].+?)\](.*?)\[\/url\]/i', '$2', $s);
$s = preg_replace('/\[url\]([^(http)].+?)\[\/url\]/i', '$1', $s);

// Add line breaks
$s = nl2br($s);

// Remove the trash made by previous
$s = preg_replace(self::$lineBreaks_search, self::$lineBreaks_replace, $s);

// Parse bbcode
$s = preg_replace(self::$simple_search, self::$simple_replace, $s);

// Parse [list] tags
$s = preg_replace('/\[list\](.*?)\[\/list\]/sie', '"<ul>\n".self::process_list_items("$1")."\n</ul>"', $s);
$s = preg_replace('/\[list\=(disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman|lower-greek|lower-alpha|lower-latin|upper-alpha|upper-latin|hebrew|armenian|georgian|cjk-ideographic|hiragana|katakana|hiragana-iroha|katakana-iroha|none)\](.*?)\[\/list\]/sie',
'"<ol style=\"list-style-type: $1;\">\n".self::process_list_items("$2")."\n</ol>"', $s);


proszę o pomoc a najlepiej o przerobienie tej funkcji, by dzialala bez problemów. dodam tylko, że pod starszą wersją php wszystko działa ok, czyli ta najnowsza musiała to spowodować.

później popatrzę za innym systemem parsowania jednak na razie niech zostanie ten bbcode. muszę sobie wszystko przypomnieć (IMG:style_emoticons/default/wink.gif)

Ten post edytował lolo121 21.12.2014, 12:30:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jackraymund
post
Post #2





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

Ostrzeżenie: (0%)
-----


W callback niema niczego nadzwyczajnego. Natomiast to formatowanie jest troszkę dziwne. I ciężko mi określić co to ma dokładnie zrobić.
  1. // Preappend http:// to url address if not present
  2. $s = preg_replace('/\[url\=([^(http)].+?)\](.*?)\[\/url\]/i', '$2', $s);
  3. $s = preg_replace('/\[url\]([^(http)].+?)\[\/url\]/i', '$1', $s);

Z komentarza wynika że ma dodać http do linku...
Natomiast zamiast linku zostawia opis linku, a link wywala.
Osobiście tą linijkę bym zamienił na
  1. $s = 'jotpe';
  2. echo '<pre>';
  3. '/\[url\=([^(http)].+?)?\](.*?)\[\/url\]/i',
  4. function ($matches) {
  5. if(is_array($matches)) return "}]{$matches[2]}";
  6. },
  7. $s
  8. );

Chodź możliwe ze chodzi o coś innego.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 16:15