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

发布于 2024-09-05 20:56:46 字数 100 浏览 4 评论 0原文

如何使用正则表达式仅更改字符串中任何单词的最后一个字母?

我使用 mb_strtolower() 将希腊语中的字符串从大写更改为小写,但我对 Final 's' 有问题。

how can change only the last letter of any word of a string with regular expressions?

I use mb_strtolower() for change strings from upper to lower in Greek language and I have problem with final 's'.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不顾 2024-09-12 20:56:46

使用 单词边界 -- \b -- 来匹配单词的开头或结尾。尝试

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

Use a word boundary -- \b -- to match the start or end of a word. Try

preg_replace ('/σ\b/', 'ς', $cat_name);
水溶 2024-09-12 20:56:46
preg_replace (‘/σ\b/’, ‘ς’, $cat_name);
preg_replace (‘/σ\b/’, ‘ς’, $cat_name);
本王不退位尔等都是臣 2024-09-12 20:56:46

编辑2

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É"< /code>,这给出了sdfé

EDIT2:

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

EDIT: Apparently, this doesn't work for greek leters, preg_replace will match "f", not the sigma.

Not that I know any greek, but σ is labelled as "Greek small letter sigma", so you ask for the lowercase version, it should still give σ.

mb_strtolower() should work. You're probably doing something wrong. Post the relevant portion of your program.

Anyway, with preg_replace and assuming both your script and $cat_name are encoded in UTF-8, it's:

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

for instance, if $cat_name == "sdfÉ", this gives sdfé.

下壹個目標 2024-09-12 20:56:46

我使用的代码是:
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 与 PHP 版本 5.3.1 一起使用,并且开关 \b 有效。
那么问题出在不同版本的 Php 或 php.ini 中?

谢谢各位的回复..

The code that I use is:
mb_internal_encoding("ISO-8859-7");
$cat_name=mb_strtolower($categories_name);
$cat_name=preg_replace('/σ\b/', 'ς', $cat_name);

The problem is that when I use
$cat_name=preg_replace('/σ/', 'ς', $cat_name); work right and replace every 'σ' with 'ς'

My server has PHP 5.2.6-1+lenny8 with Suhosin-Patch 0.9.6.2 (cli) (built: Mar 14 2010 09:07:33)

Local in my laptop I use Xamp for windows with PHP Version 5.3.1 and the switch \b work.
So the problem is in the different version of Php or in php.ini ?

Thanks for the replies..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文