preg_replace('/σ/','ς',$ cat_name);

时间:2010-06-16 11:43:59

标签: php regex preg-replace

如何只更改带有正则表达式的字符串中任何单词的最后一个字母?

我使用mb_strtolower()来改变希腊语中从上到下的字符串,我对final's'有问题。

4 个答案:

答案 0 :(得分:3)

使用word boundary - \b - 匹配单词的开头或结尾。尝试

preg_replace ('/σ\b/', 'ς', $cat_name);

答案 1 :(得分:1)

preg_replace (‘/σ\b/’, ‘ς’, $cat_name);

答案 2 :(得分:0)

<强> EDIT2

mb_internal_encoding("UTF-8");
$s = "sdfΣ";
echo $s,"\n";
echo mb_ereg_replace("Σ\\b", 'ς', $s);

编辑:显然,这不适用于希腊语,preg_replace将匹配“f”,而不是西格玛。

不是我知道任何希腊语,但σ被标记为“希腊小写字母sigma”,所以你要求小写版本,它仍然应该给σ

mb_strtolower()应该有效。你可能做错了什么。发布您计划的相关部分。

无论如何,使用preg_replace并假设您的脚本和$cat_name都以UTF-8编码,它是:

echo preg_replace ("/\\w\\b/eu", 'mb_strtolower(\'\\0\', \'UTF-8\')', $cat_name);

例如,如果$cat_name == "sdfÉ",则会提供sdfé

答案 3 :(得分:0)

我使用的代码是: mb_internal_encoding( “ISO-8859-7”); $ cat_name = mb_strtolower($ categories_name); $ cat_name = preg_replace('/σ\ b /','ς',$ cat_name);

问题在于我何时使用 $ cat_name = preg_replace('/σ/','ς',$ cat_name);正确工作并用'ς'替换每个'σ'

我的服务器有PHP 5.2.6-1 + lenny8和Suhosin-Patch 0.9.6.2(cli)(内置:2010年3月14日09:07:33)

我的笔记本电脑中的本地我使用Xamp for Windows with PHP Version 5.3.1和switch \ b工作。 所以问题出现在不同版本的Php或php.ini中?

感谢您的回复..