仅当字符串是搜索时才替换字符串(preg_replace multibyte)

时间:2017-02-22 19:57:57

标签: php regex string preg-replace multibyte

我有问题。我想替换某些字符串,只要它们与我输入的字符串完全相同。因此,如果有一个包含5 Eur的字符串,则只应将其替换为例如Steam 5 EuroHow are you 5 Eur pls,如果他是孤身一人,而不是如果字符串就像$string = str_replace('Apple Itunes 25 Euro Guthaben Prepaid De', 'Apple iTunes 25 Euro', $string)

使用我的实际代码,这是不可能的......我使用例如:

25 Eur

因为这里的字符串包含$string = str_replace('25 Eur', 'Steam 25 Euro', $string); ,所以这段代码也添加了一些内容:

preg_replace(/\b25 Eur\b/i)

但如果我想使用START startNode=node:node_auto_index(name="Start"), endNode=node:node_auto_index(name="Finish") MATCH p=(startNode)-[:NAVIGATE_TO*]->(endNode) RETURN p AS shortestPath, reduce(distance=0, r in relationships(p) : distance+r.distance) AS totalDistance ORDER BY totalDistance ASC LIMIT 1; ,我会收到此错误:

  

PHP警告:preg_replace():

中的未知修饰符' '

所以我有两个问题:

  1. 如何使用多字节替换功能?

  2. 如果他独立而不是包含搜索到的字符串,我怎么能告诉这个函数只替换某个字符串?

  3. 问候,谢谢!

1 个答案:

答案 0 :(得分:1)

这应该有效。

搜索:

^(25 Eur)$

替换为:

Steam 25 Euro

输入:

Apple Itunes 25 Euro Guthaben Prepaid De', 'Apple iTunes 25 Euro
25 Eur

输出:

Apple Itunes 25 Euro Guthaben Prepaid De', 'Apple iTunes 25 Euro
Steam 25 Euro

PHP代码:

<?php
$re = '/^(25 Eur)$/m';
$str = 'Apple Itunes 25 Euro Guthaben Prepaid De\', \'Apple iTunes 25 Euro
25 Eur';
$subst = 'Steam 25 Euro';

$result = preg_replace($re, $subst, $str);

echo "The result of the substitution is ".$result;

请参阅:https://regex101.com/r/3DKEas/2