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

0
<?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

3
$test2 = preg_replace('/\[math\](.*?)\[\/math\]/i', "\\($1\\)", $test);
0
mpaw napisał(a):
> <?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\)'`.

1 użytkowników online, w tym zalogowanych: 0, gości: 1