- Замяна само на точния низ
WT форуми -> PHP MySQL ASP.NET -> Замяна само на точния низ
Създайте нова тема Напишете отговор 
Автор Съобщение
cHuBakA
Нов
Нов

Регистриран на: 22/09/2011 3:45 pm

Support: 0
Bonus: 0
Мнения: 134
Мнение 30/07/2018 3:52 pm     Замяна само на точния низ Отговорете с цитат


Здравейте. При str_replace с асоциативен масив


PHP code:
$replacements = array(
'11' => 'аа',
'22' => 'bb',
);


как може да се направи замяната да бъде само на точния низ?

Ето по-точно какво имам предвид. Сега когато има 11 го заменя с "aa", но когато е между числа 01123 заменя единиците вътре и става 0аа23 .

Как може да се направи 11 да го заменя само когато е самостоятелно число, а когато е между други числа да го оставя както е и да не го заменя?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 30/07/2018 6:14 pm      Отговорете с цитат


Заповядай

PHP code:

$string = 'This will be replaced 11 22, and this is not 111 222 01123 02234';
$patterns = array();
$patterns[0] = '/(\b11\b)/i';
$patterns[1] = '/(\b22\b)/i';
$replacements = array();
$replacements[0] = 'aa';
$replacements[1] = 'bb';
echo preg_replace($patterns, $replacements, $string);
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
cHuBakA
Нов
Нов

Регистриран на: 22/09/2011 3:45 pm

Support: 0
Bonus: 0
Мнения: 134
Мнение 30/07/2018 6:31 pm      Отговорете с цитат


Благодаря много! Точно това имах предвид Smile

Допълнителен въпрос , този начин подходящ ли е голям обем низове?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 30/07/2018 6:49 pm      Отговорете с цитат


Би трябвало, аз поне не знам по-добър начин да се направи замяна на точен низ.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
cHuBakA
Нов
Нов

Регистриран на: 22/09/2011 3:45 pm

Support: 0
Bonus: 0
Мнения: 134
Мнение 30/07/2018 7:23 pm      Отговорете с цитат


Ок. Благодаря много!!!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
cHuBakA
Нов
Нов

Регистриран на: 22/09/2011 3:45 pm

Support: 0
Bonus: 0
Мнения: 134
Мнение 30/07/2018 8:01 pm      Отговорете с цитат


Моля за малко допълнение. Има ли начин да се добави към същия код проверка за 11 и 22 и ако е друго число да изписва съобщение. Примерно "грешка'?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 30/07/2018 8:31 pm      Отговорете с цитат


В смисъл искаш да вади грешка ако няма съвпадение с шаблоните, или ще имаш повече от два шаблона и искаш да провериш дали точно някой от тези двата е излязъл?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
cHuBakA
Нов
Нов

Регистриран на: 22/09/2011 3:45 pm

Support: 0
Bonus: 0
Мнения: 134
Мнение 30/07/2018 8:45 pm      Отговорете с цитат


Само ако няма съвпадение с шаблоните...?

п.п.В смисъл, ако не е 11 или 22 да показва грешка
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 30/07/2018 9:48 pm      Отговорете с цитат


Примерно така.

PHP code:

$string = 'This will be replace 11 22, and this is not 111 222 01123 02234';
$patterns = array();
$patterns[0] = '/(\b11\b)/i';
$patterns[1] = '/(\b22\b)/i';
$replacements = array();
$replacements[0] = 'aa';
$replacements[1] = 'bb';
$subject = preg_replace($patterns, $replacements, $string);
$match_1 = '/(\baa\b)/i';
$match_2 = '/(\bbb\b)/i';
$res_1 = preg_match($match_1, $subject);
$res_2 = preg_match($match_2, $subject);
if($res_1 == 0 || $res_2 == 0) {
echo 'error';
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
cHuBakA
Нов
Нов

Регистриран на: 22/09/2011 3:45 pm

Support: 0
Bonus: 0
Мнения: 134
Мнение 31/07/2018 12:03 am      Отговорете с цитат


Благодаря много!

п.п В случая постоянно ми дава error, но виждам каква е идеята и ще се опитам да си го оправя. Благодаря още веднъж teroristd!!!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети