2017-02-22 30 views
0

У меня проблема. Я хочу заменить определенные строки только в том случае, если они точно такие, как я набирал. Поэтому, если есть строка с 5 Eur, его следует заменить только, например. Steam 5 Euro, если он стоит один, а не если строка похожа на How are you 5 Eur pls.Заменить String только в том случае, если строка является поиском (preg_replace multibyte)

С моим фактическим кодом это невозможно ... Я использую, например:

$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 Warning: preg_replace(): Unknown modifier '�' in

Так у меня есть два Qu :

  1. Как использовать функцию замены многобайтовых?

  2. Как я могу сказать эту функцию только для замены определенной строки, если он стоит один, а не если он содержит искомую строку?

Поздравления и благодарности!

+0

Я не вижу неизвестный модификатор, но якорь шаблон '/^25 Eur $/i' – AbraCadaver

+0

Это только фрагмент. Мой фактический список длиннее и содержит символы, такие как ' ' - с'/^ 25 Eur $/i' он заменяет только строку, а не стоит отдельно? - ТОЛЬКО, ЕСЛИ ЕГО СТРОКА БЕЗ ЧЕГО? – Jan

+0

неясно, что значит * A STRING БЕЗ ЧЕГО *? потому что '/^25 Eur $/i' - это один случай,'/\ b25 Eur \ b/i' - это еще один случай – RomanPerekhrest

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^