PHP正则表达式-除去字母数字、空格、破折号和@符号之外的所有内容

PHP正则表达式-除去字母数字、空格、破折号和@符号之外的所有内容,php,regex,Php,Regex,我目前正在使用此选项删除不需要的字符: $pattern = "[^a-zA-Z0-9_ .]*"; $form_lookup = @ereg_replace($pattern, '', $form_lookup); 如何包含/允许@符号 这些似乎没有如预期的那样起作用: $pattern = "[^a-zA-Z0-9_ .\@]*"; $pattern = "[^a-zA-Z0-9_ .@]*"; 使用preg\u repla

我目前正在使用此选项删除不需要的字符:

    $pattern        = "[^a-zA-Z0-9_ .]*";
    $form_lookup    = @ereg_replace($pattern, '', $form_lookup);
如何包含/允许@符号

这些似乎没有如预期的那样起作用:

$pattern        = "[^a-zA-Z0-9_ .\@]*";
$pattern        = "[^a-zA-Z0-9_ .@]*";

使用
preg\u replace
代替
ereg\u replace

$form_lookup    = 'foo@!:_;';
$pattern        = '/[^a-zA-Z0-9_ .@]*/';
$form_lookup    = preg_replace($pattern, '', $form_lookup);
输出:

string 'foo@_' (length=5)

使用
preg\u replace
代替
ereg\u replace

$form_lookup    = 'foo@!:_;';
$pattern        = '/[^a-zA-Z0-9_ .@]*/';
$form_lookup    = preg_replace($pattern, '', $form_lookup);
输出:

string 'foo@_' (length=5)

您可以使用此正则表达式:

/[^\w\s@-.]/

并使用
preg.*
和not
ereg.*
因为它已被弃用

您可以使用此正则表达式:

/[^\w\s@-.]/

使用
preg.*
而不是
ereg.*
因为它被弃用了

为什么你要使用
ereg.*
?预期的结果是什么?@RahilWazir:因为他是一个丑陋的维和者。主题字符串在哪里?@CasimiretHippolyte赢得了半个弗莱林饼干。我是男性的错误假设降低了奖赏。你为什么要使用
ereg.*
?预期的结果是什么?@RahilWazir:因为他是一个丑陋的和平卫士。主题字符串在哪里?@Casimimirethippolyte赢得了半个frelling饼干。我是男性的错误假设降低了奖金。从PHP5.3.0开始,ereg_replace就被弃用了。非常不鼓励依赖此功能。请参阅文档:自PHP5.3.0起,ereg_replace已被弃用。非常不鼓励依赖此功能。请参阅文档:缺少OP表达式中的句点。缺少OP表达式中的句点。