Jump to content

[php] preg_replace zamiana na preg_replace_callback


Recommended Posts

Napotkałem problem przy przesiadce na nowa wersje php 7.3

 

miałem kod:

 

$arRegExp = array( 
           '!(?<=[.-;:\s])(?:http(s?)://)?(www\.)(.*?)(?=[-;:\s])!ie' 
           ,'!(?<=[.-;:\s])(?:http(s?)://)(www\.)?(.*?)(?=[-;:\s])!ie' 
           ,'/([[:alnum:]]([[:alnum:]_\.:-])?)+@([[:alnum:]][[:alnum:]_\.:-]+[[:alnum:]]\.)?((([[:alnum:]]([[:alnum:]_\.:-]{1,59})?[[:alnum:]])|[[:alnum:]])\.)([a-z]{2,4}|[0-9]{1,3})/is' 
                      ); 

     $arReplace = array( 
           'substr( "$3", -1 )!="."?"<a target=\"_blank\" href=\"http$1://$2$3\" title=\"\">$2$3</a>":"<a target=\"_blank\" href=\"http$1://$2".substr( "$3", 0, -1 )."\" title=\"\">$2".substr( "$3", 0, -1 )."</a>."' 
            ,'substr( "$3", -1 )!="."?"<a target=\"_blank\" href=\"http$1://$2$3\" title=\"\">http://$2$3</a>":"<a target=\"_blank\" href=\"http$1://$2".substr( "$3", 0, -1 )."\" title=\"\">http://$2".substr( "$3", 0, -1 )."</a>."'
            ,'<a href="mailto:$0">$0</a>' 
                      );

     $oplpokaz = preg_replace( $arRegExp,$arReplace, $oplpokaz ); 

oczywiście wywala mi błąd :)

 

możesz mi ktoś pomóc i przerobić to na  

preg_replace_callback?

Osobo odsyłającym do php.net dziękuję, jak ktoś chce zrobić to ot tak to dzięki inne osoby proszę na priv by nie robić z tego ogłoszenia :)

- Reklama -

 

Miejsce do wynajęcia. Zainteresowany? Zgłoś się na PW z propozycją :)

Link to post
Share on other sites
Posted (edited)
14 godzin temu, zakręcony napisał:

Osobo odsyłającym do php.net dziękuję

Nie ładnie tak pisać, bo zobacz:

Cytat

The behavior of this function is almost identical to preg_replace(), except for the fact that instead of replacement parameter, one should specify a callback. >>Zachowanie tej funkcji jest prawie identyczne jak preg_replace (), poza tym, że zamiast parametru zastępczego należy podać wywołanie zwrotne.

---

A callback that will be called and passed an array of matched elements in the subject string. The callback should return the replacement string. This is the callback signature >>  Wywołanie zwrotne, które zostanie wywołane i przekaże tablicę dopasowanych elementów w ciągu podmiotu. Wywołanie zwrotne powinno zwrócić ciąg zastępczy. Oto podpis wywołania zwrotnego:

 

 

https://www.w3schools.com/php/func_regex_preg_replace_callback.asp

 

Edited by Mion
  • Thanks 1

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL
[Pomoc] dla 5-letniej Ani Serkowskiej - ulżyj jej w cierpieniu!

 

Link to post
Share on other sites

Ja czegoś nie wiem, od kiedy preg_replace jest wycofany z php?

Linki z wizytówek NAP, RSS, stron z ogłoszeniami, stron ze statystykami,

stron z informacjami WHOIS domen, katalogów stron, portfolio stron firmowych i inne...

Sklep SEO

Link to post
Share on other sites

hehe wcale nie jest wycofany

 

preg_replace

(PHP 4, PHP 5, PHP 7, PHP 8)

preg_replace — Perform a regular expression search and replace

 

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL
[Pomoc] dla 5-letniej Ani Serkowskiej - ulżyj jej w cierpieniu!

 

Link to post
Share on other sites

Tu chodzi o modyfikator „e” dla preg_replace, którego silnik wyrażeń regularnych już nie obsługuje (bo był podatny na jakieś błędy czy ataki).

Ale tak to jest, jak musimy zgadywać bo autor tematu nie wkleja nawet błędu, który zwraca interpreter.

Link to post
Share on other sites
Posted (edited)
5 godzin temu, okazwłoka napisał:

Ja czegoś nie wiem, od kiedy preg_replace jest wycofany z php?

Nie napisałem że jest wycofane, napisałem że wywala mi błąd na nowej wersji php 7.3 ;)

Cytat

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead 

@Mion masz rację. Tylko że dałem też może nie jasno znać, że za modyfikację zapłacę po kontakcie na priv (o tym wiesz ;) ), a nie chciałem jasno tego pisać bo to nie dział ogłoszeń a być może kiedyś komuś taka przeróbka sie by przydała. Tak czy siak, dzięki za pomoc.

Edited by zakręcony

- Reklama -

 

Miejsce do wynajęcia. Zainteresowany? Zgłoś się na PW z propozycją :)

Link to post
Share on other sites

Ja bym poszukał gotowca np. tu są jakieś rozwiązania podane:

https://stackoverflow.com/questions/15454220/replace-preg-replace-e-modifier-with-preg-replace-callback

 

Linki z wizytówek NAP, RSS, stron z ogłoszeniami, stron ze statystykami,

stron z informacjami WHOIS domen, katalogów stron, portfolio stron firmowych i inne...

Sklep SEO

Link to post
Share on other sites
Godzinę temu, ttah napisał:

Ale tak to jest, jak musimy zgadywać bo autor tematu nie wkleja nawet błędu, który zwraca interpreter.

Przede wszystkim powinien opisać jaki cel che osiągnąć. Innymi słowy co kod ma zrobić, bo przeważnie jest kilka dróg do celu ;) 

  • Like 1

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL
[Pomoc] dla 5-letniej Ani Serkowskiej - ulżyj jej w cierpieniu!

 

Link to post
Share on other sites
Posted (edited)

@Mion zamienić linki w tekście na odnośniki aktywne w tym że tekście. I tu faktycznie mój błąd, sorry :)

Edited by zakręcony

- Reklama -

 

Miejsce do wynajęcia. Zainteresowany? Zgłoś się na PW z propozycją :)

Link to post
Share on other sites

No to tutaj: https://stackoverflow.com/questions/17900004/turn-plain-text-urls-into-active-links-using-php

Dobrze wygląda skrypt ten:

/* Proposed by:
 * Søren Løvborg
  • Thanks 1

Linki z wizytówek NAP, RSS, stron z ogłoszeniami, stron ze statystykami,

stron z informacjami WHOIS domen, katalogów stron, portfolio stron firmowych i inne...

Sklep SEO

Link to post
Share on other sites
Posted (edited)

@okazwłoka dzięki. Jest tam tylko problem z 

 

htmlspecialchars();

ale to nie problem :) @okazwwłoka, @mion sękju wery macz :)

Edited by zakręcony

- Reklama -

 

Miejsce do wynajęcia. Zainteresowany? Zgłoś się na PW z propozycją :)

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Terms of Use Privacy Policy