【问题标题】:Replace String only if string is search (preg_replace multibyte)仅当字符串是搜索时才替换字符串(preg_replace 多字节)
【发布时间】:2017-07-13 01:37:04
【问题描述】:

我有问题。只有当它们与我输入的完全一样时,我才想替换某些字符串。因此,如果有一个带有5 Eurhe 的字符串,则只能替换为例如Steam 5 Euro,如果他独自站立,而不是如果字符串像 How 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) 我会收到此错误:

PHP 警告:preg_replace(): Unknown modifier '�' in

所以我有两个问题:

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

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

您好,谢谢!

【问题讨论】:

  • 我没有看到未知修饰符,但是锚定了模式/^25 Eur$/i
  • 这只是一个sn-p。我的实际列表更长,并且包含像 这样的字符 - 对于/^25 Eur$/i,它只会在它是一个字符串而不是独立的情况下替换? - 仅当它是一个没有 ANTHING 的字符串时?
  • 不清楚,A STRING WITHOUT ANTHING 是什么意思?因为/^25 Eur$/i - 是一种情况,/\b25 Eur\b/i - 是另一种情况
  • 知道了,谢谢!
  • 为什么现在被“True”取代了? $myTitle = "How are you?"; $string = mb_ereg_replace('/\bHow are you?\b/i', 'True', $myTitle); echo $string; 我得到“你好吗?”...

标签: php regex string preg-replace multibyte


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-02
    • 2018-01-02
    • 1970-01-01
    • 2012-06-18
    • 2021-09-29
    • 2012-08-11
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多