RegExp (preg_replace), błąd przy wywołaniu funkcji

RegExp (preg_replace), błąd przy wywołaniu funkcji
mpaw
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 531
0
Kopiuj
<?php
    $test = "111[math]abc[/math]222";
    $test2 = preg_replace(/\[math\](.*?)\[\/math\]/gi, "\\($1\\)", $test);
    echo "<pre>" . $test2 . "</pre>";
?>

mam takie coś. Co robię źle? Uruchomienie daje błąd 500.
Tutaj działa ok https://regex101.com/r/EvQqus/1

66
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 53
3
Kopiuj
$test2 = preg_replace('/\[math\](.*?)\[\/math\]/i', "\\($1\\)", $test);
Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0
mpaw napisał(a):
Kopiuj
> <?php
>     $test = "111[math]abc[/math]222";
>     $test2 = preg_replace(/\[math\](.*?)\[\/math\]/gi, "\\($1\\)", $test);
>     echo "<pre>" . $test2 . "</pre>";
> ?>
> ```
> 
> mam takie coś. Co robię źle? Uruchomienie daje błąd 500.
> Tutaj działa ok https://regex101.com/r/EvQqus/1

No oczywiście błędem jest ten zapis `/\[math\](.*?)\[\/math\]/gi`, bo nie ma czegoś takiego w PHP. Jeśli to uruchomisz, to dostaniesz ParseError `Uncaught ParseError: syntax error, unexpected '/'`, który skończy się fatal errorem, który to ubije Twój proces PHP, który to spowoduje 500tkę.

No i w PHP nie ma flagi `g`.

PS: A swoją drogą zamiast `"\\($1\\)"`, mógłbyś normalnie napisać `'\($1\)'`.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.