Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Замена слова
цитата
09/05/12 в 10:04
 Lexikon
вот тут соображаю, как бы правильно сделать.
Есть к примеру текст в котором нужно заменить слово/словосочетание, но иногда то слово/словосочетание которое нужно заменить является частью другого слова.
Так к примеру в тексте есть "teenager", а по условию нужно заменить "teen" на "girl", если заменять просто как есть то получиться "girlager" smail101.gif
Ну или нужно заменить "her pussy" на "her cunt", а в тексте встречается "another pussy" т.е. может захватывать совершенно ненужные части
Решил выйти из этого положения добавляя к слову поиска пробулы в начале и в конце.
Но тут сново столкнулся с проблемой, текст может стоять: в начале строки, в конце, и перед знаками препинания.
Подкинте идею пожалуйста, как быть в такой ситуации, заменять только то что нужно и не портя другие слова и словосочетания.
Размышлял на тему делать это с помощью регулярки, т.е. если перед или после слова поиска стоит буквенный символ, замену не производить.
цитата
09/05/12 в 10:15
 Alexandur
Lexikon писал:
Размышлял на тему делать это с помощью регулярки, т.е. если перед или после слова поиска стоит буквенный символ, замену не производить.

Или если стоит пробел, запятая, точка, воскл или вопр знак. Правда, в этом случае, предложения должны быть нормально составлены.
цитата
09/05/12 в 11:31
 Emperor
Lexikon писал:
Размышлял на тему делать это с помощью регулярки


надо не размышлять, а учить матчасть - Example #2 icon_smile.gif
цитата
09/05/12 в 13:14
 FXIX
пиши регулярку которая бы исключала справа\слева наличие букв
цитата
09/05/12 в 14:08
 Lexikon
вот что вышло:

<?php

$subject = "PHP is the website scripting language of choice.";
$pattern = "website";
$replacement = "webpage";

$result = preg_replace("/\b$pattern\b/i", $replacement, $subject);

echo $result;

?>


то что нужно smail54.gif
Отдельное спасибо Emperor
цитата
09/05/12 в 14:48
 Lexikon
нашел ошибку, вопрос потер.

Последний раз редактировалось: Lexikon (09/05/12 в 16:21), всего редактировалось 1 раз
цитата
09/05/12 в 14:59
 Lexikon
от чего ушел в прошлых топиках вернулся сново:

<?php

$subject = "PHP scripting language perfect for creating Websites.";
$pattern = Array(
        "/\bperfect\b/i",
        "/\bwebsites\b/i"
);

$replacement = Array(
        "best",
        "webpages"
);

$result = preg_replace($pattern, $replacement, $subject);

echo $result;

?>


на выходе этого скрипта получаю текст:
PHP scripting language best for creating webpages.
но сново возникла проблема, как при этом всём сохранить регистр букв.
т.е. чтоб на выходе было:
PHP scripting language best for creating Webpages. icon_confused.gif icon_mad.gif

Или как сделать чтоб каждое предложение после (.?!) начиналось с большой буквы?


Эта страница в полной версии