Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/05/12 в 10:04 |
вот тут соображаю, как бы правильно сделать.
Есть к примеру текст в котором нужно заменить слово/словосочетание, но иногда то слово/словосочетание которое нужно заменить является частью другого слова.
Так к примеру в тексте есть "teenager", а по условию нужно заменить "teen" на "girl", если заменять просто как есть то получиться "girlager"
Ну или нужно заменить "her pussy" на "her cunt", а в тексте встречается "anot her pussy" т.е. может захватывать совершенно ненужные части
Решил выйти из этого положения добавляя к слову поиска пробулы в начале и в конце.
Но тут сново столкнулся с проблемой, текст может стоять: в начале строки, в конце, и перед знаками препинания.
Подкинте идею пожалуйста, как быть в такой ситуации, заменять только то что нужно и не портя другие слова и словосочетания.
Размышлял на тему делать это с помощью регулярки, т.е. если перед или после слова поиска стоит буквенный символ, замену не производить.
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 09/05/12 в 10:15 |
Lexikon писал: | Размышлял на тему делать это с помощью регулярки, т.е. если перед или после слова поиска стоит буквенный символ, замену не производить. |
Или если стоит пробел, запятая, точка, воскл или вопр знак. Правда, в этом случае, предложения должны быть нормально составлены.
|
|
|
|
С нами с 05.05.05
Сообщения: 470
Рейтинг: 426
|
Добавлено: 09/05/12 в 11:31 |
Lexikon писал: | Размышлял на тему делать это с помощью регулярки |
надо не размышлять, а учить матчасть - Example #2
|
|
|
|
Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 09/05/12 в 13:14 |
пиши регулярку которая бы исключала справа\слева наличие букв
|
|
пришел к победе коммунистического труда
|
8
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/05/12 в 14:08 |
вот что вышло:
Код: [развернуть] |
<?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;
?>
|
то что нужно
Отдельное спасибо Emperor
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/05/12 в 14:48 |
нашел ошибку, вопрос потер.
Последний раз редактировалось: Lexikon (09/05/12 в 16:21), всего редактировалось 1 раз
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/05/12 в 14:59 |
от чего ушел в прошлых топиках вернулся сново:
Код: [развернуть] |
<?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.
Или как сделать чтоб каждое предложение после (.?!) начиналось с большой буквы?
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |