2012-01-07 2 views
-5

Можно создать дубликат:
Converting ereg expressions to preg
eregi_replace(“[\]”,'',$data) — what does this line do?Альтернатива для ergi_replace

Я использую PHPMailer и использует eregi_replace, я пытаюсь обновить это, это было бы правильно, я я не уверен, есть ли у меня /i в нужном месте ?.

$body = eregi_replace("[\]",'',$body); 

стал бы:

$body = preg_replace("[\]",''/i,$body); 

ответ

0

Нет, вы должны были бы написать preg_replace('/\\/i', '', $body). Это предполагает, конечно, что вы хотите удалить все обратные косые черты внутри тела.

+0

Вы должны ввести обратную косую черту четыре раза, когда хотите использовать ее в регулярном выражении буквально. – TimWolla

+0

Прямо там. Виноват. –

0
$body = preg_replace("/[\\]/i","",$body); 
+0

Я получаю эту ошибку при попытке использовать это >> –

+0

Предупреждение: preg_replace() [function.preg-replace]: Ошибка компиляции: отсутствует завершение] для символьного класса со смещением 3 в C: \ server2go \ server2go \ htdocs \ chandlers \ компоненты \ com_jumi \ views \ application \ view.html.php (38): eval() 'd код в строке 9 –

+0

Ах да, конечно - извините, используйте \\\\ в квадратных скобках – SmokeyPHP

1

Ваше регулярное выражение удаляет из корпуса все \. Нет необходимости иметь этот регистр без учета регистра, поскольку \ не имеет случая. Вы бы написать, что регулярное выражение, как:

$body = preg_replace('/\\\\/i', $body); 

Не то, что вам не нужно i, как я сказал, потому что их нет разницы между случаем нечувствительным и чувствителен к регистру матч здесь. Также обратите внимание, что фактическое регулярное выражение равно \. / - это разделители, и вам нужны четыре обратные косые черты, потому что они находятся в строке PHP, поэтому они становятся двумя буквальными обратными косыми чертами \\, которые необходимы, потому что выражение /\/ недействительно, так как обратная косая черта выходит за пределы разделителя конца.

Смежные вопросы