Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_replace返回空字符串_Php_String_Preg Replace - Fatal编程技术网

Php preg_replace返回空字符串

Php preg_replace返回空字符串,php,string,preg-replace,Php,String,Preg Replace,创建上面的代码是为了用普通字符替换一些特殊字符,但无论我输入了哪个$nachricht($message),它总是返回一个空字符串 谢谢你的帮助 编辑 我把它改成: //Chars to be replaced $suchmuster = array(); $suchmuster[0] = 'á'; $suchmuster[1] = 'à'; $suchmuster[2] = 'â'; $suchmuster[3] = 'é'; $suchmuster[4] = 'è'; $suc

创建上面的代码是为了用普通字符替换一些特殊字符,但无论我输入了哪个$nachricht($message),它总是返回一个空字符串

谢谢你的帮助

编辑

我把它改成:

//Chars to be replaced      
$suchmuster = array();
$suchmuster[0] = 'á';
$suchmuster[1] = 'à';
$suchmuster[2] = 'â';

$suchmuster[3] = 'é';
$suchmuster[4] = 'è';
$suchmuster[5] = 'ê';

$suchmuster[6] = 'í';
$suchmuster[7] = 'ì';
$suchmuster[8] = 'î';

$suchmuster[9] = 'ó';
$suchmuster[10] = 'ò';
$suchmuster[11] = '/ô/';

$suchmuster[12] = 'ú';
$suchmuster[13] = 'ù';
$suchmuster[14] = 'û';

$suchmuster[15] = ' ';
$suchmuster[16] = '.';
$suchmuster[17] = ',';
$suchmuster[18] = '-';
$suchmuster[19] = '_';

//Replaces

$ersetzungen = array();
$ersetzungen[0] = 'a';
$ersetzungen[1] = 'a';
$ersetzungen[2] = 'a';

$ersetzungen[3] = 'e';
$ersetzungen[4] = 'e';
$ersetzungen[5] = 'e';

$ersetzungen[6] = 'i';
$ersetzungen[7] = 'i';
$ersetzungen[8] = 'i';

$ersetzungen[9] = 'o';
$ersetzungen[10] = 'o';
$ersetzungen[11] = 'o';

$ersetzungen[12] = 'u';
$ersetzungen[13] = 'u';
$ersetzungen[14] = 'u';

$ersetzungen[15] = '';
$ersetzungen[16] = '';
$ersetzungen[17] = '';
$ersetzungen[18] = '';
$ersetzungen[19] = '';

$newmessage = preg_replace($suchmuster, $ersetzungen, strtolower($message));

它仍然返回一个空字符串。

通过

//Chars to be replaced

$suchmuster[0] = '/ /';
$suchmuster[1] = '/./';
$suchmuster[2] = '/,/';
$suchmuster[3] = '/-/';
$suchmuster[4] = '/_/';

//Replaces

$ersetzungen[0] = '';
$ersetzungen[1] = '';
$ersetzungen[2] = '';
$ersetzungen[3] = '';
$ersetzungen[4] = '';

$newmessage = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', strtolower($message));

$newmessage = preg_replace($suchmuster, $ersetzungen, $newmessage);

除了使用多个模式之外,您还可以将模式组合为:

$suchmuster = array();
$suchmuster[0] = "/á/";
$suchmuster[1] = "/à/";

strtolower
不会将
Á
等转换为
á
。首先进行
iconv
转换,然后进行
strtolower

有关更新问题的转换:

正则表达式使用特殊的控制字符。在您的情况下,
/./
会导致结果为空
在正则表达式中表示“任意字符”,因此您将用零替换每个字符

使用
preg_quote()
对正则表达式中的特殊字符进行转义。示例:
$xy='/'。preg_quote(“)/”

但是不使用正则表达式,您可以做得更简单,如:

$nachrichtneu = preg_replace('/[,.\s_-]/', '', $nachrichtneu);

启用
错误报告
。除了
/ô/
之外,$suchmuster都不是有效的regexp。如果字符集是LaTIN -1,那么考虑<代码> StruxPox< /Calp>或<代码> STRTR < /C>。您可以指定这样的数组:<代码> $SukMuths=数组(阿纳尔,'','A',/*等*/);
如果您只想去掉变音符号,还可以使用iconv('UTF-8','US-ASCII//TRANSLIT',$string)
。谢谢。错误报告不会返回任何内容。即使我将要替换的每个字符都放在“/”Marc Korpel中,它也不起作用,谢谢你,几秒钟前我发现了这个。我也不想要任何像“-”或“”这样的特殊字符。我已经更新了我的代码,但它仍然不起作用(见上面的编辑)@NicoEnking,你得到一个空字符串的原因由Kaii在他们的回答中解释。@HamZa没有逃逸防止它匹配每个字符所必需的点吗?@MarcelKorpel在字符类中,这个点失去了它的意义,所以它变成了字面上的点字符,这意味着转义它是多余的。字符类开头或结尾的连字符也是如此@哈姆扎,我自己也测试过。谢谢你链接到regex101.com,我不知道那个网站,它看起来非常有用。
$replaces = array(
    '.' => '',
    ',' => '',
    // ...
);
$message = str_replace(array_keys($replaces), array_values($replaces), $message);