我一直在用编码搜索单词边界:
<?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的字节。
答案 0 :(得分:2)
是的! \ w,\ b受字符集的影响! 在我的代码中,我使用:
setlocale(LC_CTYPE, "cs_CZ");
来处理它。这会影响\ w,\ b在regexp中的行为,但也会影响strtoupper()
。
如果您还需要排序和比较字符串才能正常工作,您可以使用(取决于您所在的国家/地区):
setlocale(LC_COLLATE, "cs_CZ");
我也发现了这种困难的方式 - 它没有用......:)
所以,回答你原来的问题 - 你不能用header()
函数来影响这个,因为这只是告诉浏览器的编码。您需要的是在服务器上更改PHP的行为,这是通过上述命令完成的。