Кажется, что, начиная с PHP 5.1.1, обратная косая черта в строках с двойными кавычками также должна быть напечатана, поэтому даже ваш код должен отлично работать с более новыми версиями PHP (source).
В качестве альтернативы, используйте одинарные кавычки строковые литералы с '\?'
и '\/'
так, чтобы обратный слэш рассматривалась как буквальный, а не часть управляющей последовательности (или даже '\\?'
и '\\/'
):
$my_regex = str_replace(array("?", "*", "/"), array('\?', "(.*)", '\/'), "/?hl=*&*$");
// $my_regex = str_replace(array("?", "*", "/"), array('\\?', "(.*)", '\\/'), "/?hl=*&*$");
echo $my_regex;
См PHP demo
См this PHP single-quoted string literal reference:
простой st-путь для указания строки должен заключить ее в одинарные кавычки (символ '
).
Чтобы указать буквенную одиночную кавычку, сбегите с нее с помощью обратного слэша (\
). Чтобы указать буквальную обратную косую черту, удвойте ее (\\
). Все остальные экземпляры обратной косой черты будут рассматриваться как буквальная обратная косая черта: это означает, что другие управляющие последовательности, к которым вы могли бы привыкнуть, например \r
или \n
, будут выводиться буквально, как указано, а не иметь какое-либо особое значение.
Else, вы можете использовать двойные обратные слэши в doubel кавычках буквального (demo):
$my_regex = str_replace(array("?", "*", "/"), array("\\?", "(.*)", "\\/"), "/?hl=*&*$");