我有文本,我想删除所有不是以下的字符.
desired_characters =
0123456789!&',-./abcdefghijklmnopqrstuvwxyz\n
Run Code Online (Sandbox Code Playgroud)
最后一个是我想要保留的\n(换行符).
Gum*_*mbo 27
要匹配除列出的字符以外的所有字符,请使用反转字符集[^…]:
$chars = "0123456789!&',-./abcdefghijklmnopqrstuvwxyz\n";
$pattern = "/[^".preg_quote($chars, "/")."]/";
Run Code Online (Sandbox Code Playgroud)
这里preg_quote用于转义某些特殊字符,以便将它们解释为文字字符.
您还可以使用字符范围来表示列出的字符:
$pattern = "/[^0-9!&',-.\\/a-z\n]/";
Run Code Online (Sandbox Code Playgroud)
在这种情况下,文字-输入,-.是否被转义并不重要.因为,-.被解释为从,(0x2C)到.(0x2E)的字符范围,其中已经包含-(0x2D).
然后,您可以删除与以下匹配的字符preg_replace:
$output = preg_replace($pattern, "", $str);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8323 次 |
| 最近记录: |