PHP preg_replace特殊字符

puk*_*978 14 php

我想/&%#$用下划线替换所有非字母和数字字符等等,(_)'用" "空格替换所有(单引号)(所以没有下划线).

所以" 没有任何 "(忽略双引号)会变成" There_wouldnt_be_any ".

因为这个帖子,我在reg表达式上没用.

干杯

Chr*_*oft 34

$newstr = preg_replace('/[^a-zA-Z0-9\']/', '_', "There wouldn't be any");
$newstr = str_replace("'", '', $newstr);
Run Code Online (Sandbox Code Playgroud)

我将它们分成两行,以使代码更清晰.

注意:如果您正在寻找Unicode支持,请参阅下面的Filip的答案.它将匹配除了注册为字母的所有字符A-z.


Fil*_*efp 29

如果你通过写" 非字母和数字 "排除超过[A-Za-z0-9](即考虑字母,如åäö字母),并希望能够准确处理UTF-8字符串\p{L},\p{N}将有助于.

  1. \p{N}将匹配任何" 数字 "
  2. \p{L}将匹配任何" 字母字符 ",其中包括
    • 小写字母
    • 修饰符
    • 其他信件
    • 标题案例信函
    • 大写字母

文档PHP:Unicode字符属性


$data = "Thäre!wouldn't%bé#äny";

$new_data = str_replace  ("'", "", $data);
$new_data = preg_replace ('/[^\p{L}\p{N}]/u', '_', $new_data);

var_dump (
  $new_data
);
Run Code Online (Sandbox Code Playgroud)

产量

string(23) "Thäre_wouldnt_bé_äny"
Run Code Online (Sandbox Code Playgroud)