php -\w 取决于编码?

标签 php regex encoding pcre

我一直在使用以下编码搜索单词边界:

<?php
header('Content-Type: text/plain; charset="ISO-8859-7"');//Changing the charset attribute
$i=0;
for($i=0;$i<=255;$i++){
    $char=chr($i);  
    if(preg_match('/^\w$/',$char,$m)){
    echo "[".ord($m[0])."]";}
    }
?>

不知道是不是错了。 但总是给我某些位置,无论指定什么字符集。 似乎总是,无论使用何种编码,'\w' 都匹配来自 ISO-8859-1 的字节。

最佳答案

是的!\w、\b受字符集影响! 在我的代码中,我使用:

setlocale(LC_CTYPE, "cs_CZ");

处理它。这会影响正则表达式中\w、\b 的行为,也会影响 strtoupper()。 如果您还需要对字符串进行排序和比较才能正常工作,您可以使用(取决于您的国家/地区)类似的东西:

setlocale(LC_COLLATE, "cs_CZ");

我也发现了这个困难的方法 - 它没有用......:)

所以,回答你原来的问题 - 你不能用 header() 函数影响它,因为它只是告诉浏览器编码。您需要的是在服务器端更改 PHP 的行为,这是通过上述命令完成的。

关于php -\w 取决于编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803334/

相关文章:

php - 将 YouTube URL 替换为 MySQL PHPMyAdmin 中的嵌入代码

java - 编码类型以阻止文件(文本)提示下载?

python - 在python中将str转换为unicode

regex - 如何使用 -Filter (使用正则表达式)?

javascript - 使用给定的搜索词改进 RegEx 以突出显示页面上的文本

javascript - 为什么这个正则表达式不排除连字符或括号?

php - 使用准备好的语句扩展 mySql 中的 ascii 字符

php - 尝试使用 php/html 表对两列求和 - 已更新

php - 通过 PHP exec 传递变量

php - Mysql分层数据按路径查找