PHP preg_replace不工作/奇怪的字符串类型/字符数不相加
我想从字符串中删除以下指定字符:PHP preg_replace不工作/奇怪的字符串类型/字符数不相加,php,preg-replace,Php,Preg Replace,我想从字符串中删除以下指定字符: < & " # % 人物的顺序无关紧要 字符串类型有点奇怪 测试字符串如下所示: var_dump($test): string(25) "A BCDEFG/<&"#%/HI" 如果要使用正则表达式对进行转义: <?php $displayName = 'A BCDEFG/<&"#%/HI'; $displayName = preg_replace('/[\<&"#%]/', '', $dis
<
&
"
#
%
人物的顺序无关紧要
字符串类型有点奇怪 测试字符串如下所示:
var_dump($test): string(25) "A BCDEFG/<&"#%/HI"
如果要使用正则表达式对
进行转义:
<?php
$displayName = 'A BCDEFG/<&"#%/HI';
$displayName = preg_replace('/[\<&"#%]/', '', $displayName);
echo($displayName);
?>
关于“字符数不相加”部分:过去一个字符等于一个字节是正确的,但你不能再指望这个了。我的猜测是var_dump()显示了字符串内部的字节数,这是您不应该关心的
在高级语言中处理字符串时,您确实应该专注于字符数,而忽略字符串的字节数。(当然也有例外;)我只关心以下字符-@jensgram$displayName=preg\u replace('/\@matt\u tm)你是否正在替换我链接中的字符@matt\u tm。之后如何使用$displayName
($displayName,'嘿,@matt_tm,只是一个提示…如果你只关心某些字符,你应该在你的问题上提到这一点。通过阅读你的问题,我们不知道你到底想做什么,因此很难提供帮助。试着解释一下你有什么,预期的输出是什么,以及你得到了什么。啊,好的-lemme-cla主体中充斥着…displayName在class='A BCDEFG/(完全使用您建议的)之前使用var_export($displayName,TRUE)通过电子邮件输出(仅供参考)-脚本位于这样一个位置,我无法输出到屏幕您被var_dump
愚弄了。它以某种方式输出与HTML兼容的数据(或者更可能的情况是:它稍后正在进行HTML编码)。请尝试使用echo
,或者使用file\u put\u contents
@Vegard将字符串写入文件中-您是对的!!displayName before=a BCDEFG/&“#%/HI
var_dump($test): string(25) "A BCDEFG/<&"#%/HI"
$displayName = strtr($displayName, array('<' => '', '&' => '', '"' => '', '#' => '', '%' => ''));
string(20) "A BCDEFG/lt;quot;/HI"
$displayName = preg_replace('/\<&"#%/', '', $displayName);
$displayName = preg_replace('|/\<&"#%/|', '', $displayName);
$displayName = str_replace(array('<', '&', '"', '#', '%'), '', $displayName);
$displayName = str_replace(array('<', '"', '&', '#', '%'), '', $displayName);
<?php
$displayName = 'A BCDEFG/<&"#%/HI';
$displayName = preg_replace('/[\<&"#%]/', '', $displayName);
echo($displayName);
?>
A BCDEFG//HI