如何只更改带有正则表达式的字符串中任何单词的最后一个字母?
我使用mb_strtolower()来改变希腊语中从上到下的字符串,我对final's'有问题。
答案 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中?
感谢您的回复..