我想使用preg_replace()
替换%z
字符串ź
中的任意位置
所以我写道:
$pattern = array();
$pattern[0] = '/^\%z$/';
$replacements = array();
$replacements[0] = '/\ź/';
string = "oraz ró%znego typu innych wydarzen kulturalnych, sportowych i rozrywkowych."
preg_replace($pattern, $replacement, $string);
echo $string;
以上示例无效。我是正则表达式的新手,所以我不太确定我做错了什么。
非常感谢任何建议。 :)
答案 0 :(得分:1)
从正则表达式模式中删除锚^ and $
,因为%z
不在输入的开头或结尾:
$pattern[0] = '/%z/';
此外,您不需要提供替换正则表达式分隔符,也不需要转义%
或&
以便这样做:
$replacements[0] = 'ź'
答案 1 :(得分:1)
有几个问题,其中一些没有效果:
%
无需转义^
和$
锚定字符串的开头和结尾。删除它们:/%z/
$replacement
而不是$replacements
。ź
您还可以将preg_replace
替换为str_replace
来执行简单的字符串替换。只需从pattern
删除分隔符。
答案 2 :(得分:1)
在表达式中,您不需要使用字符串^
锚点的开头或字符串$
锚点的结尾,因为%z
不在字符串中的任何一个位置, %
和&
字符也不需要在此转义,因为这是一个简单的替换,我认为不需要使用数组来完成此任务。
您可以使用str_replace
。
$string = 'oraz ró%znego typu innych wydarzen kulturalnych, sportowych i rozrywkowych.';
$string = str_replace('%z', 'ź', $string);
echo $string;
使用更便宜的版本,strtr
(您可以在阵列中放置多个模式和替换)
$string = 'oraz ró%znego typu innych wydarzen kulturalnych, sportowych i rozrywkowych.';
$string = strtr($string, array('%z' => 'ź'));
echo $string;
如果您仍然决定使用正则表达式来执行此操作。
$string = 'oraz ró%znego typu innych wydarzen kulturalnych, sportowych i rozrywkowych.';
$string = preg_replace('/%z/i', 'ź', $string);
echo $string;
输出
oraz róźnego typu innych wydarzen kulturalnych, sportowych i rozrywkowych.