Skocz do zawartości

[php] preg_replace zamiana na preg_replace_callback


zakręcony

Rekomendowane odpowiedzi

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=\"\">https://$2$3</a>":"<a target=\"_blank\" href=\"http$1://$2".substr( "$3", 0, -1 )."\" title=\"\">https://$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 -

Podatki we Wrocławiu: biuro podatkowe wrocław

Miejscówa do parkowania przy Okęciu: parking okęcie

Odnośnik do komentarza
Udostępnij na innych stronach

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

 

Edytowane przez Mion
  • Thanks 1

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

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/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Edytowane przez zakręcony

- Reklama -

Podatki we Wrocławiu: biuro podatkowe wrocław

Miejscówa do parkowania przy Okęciu: parking okęcie

Odnośnik do komentarza
Udostępnij na innych stronach

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

 

Odnośnik do komentarza
Udostępnij na innych stronach

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/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

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

 

htmlspecialchars();

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

Edytowane przez zakręcony

- Reklama -

Podatki we Wrocławiu: biuro podatkowe wrocław

Miejscówa do parkowania przy Okęciu: parking okęcie

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności