| Добрый день. В общем, пишу скрипт, который должен заменять определенные слова в тексте. Например, есть текст. “Вася купил в магазине молоко. Мама сказала: «Вася – ты молодец.”.”
В этом тексте надо заменить “Вася” на любое другое имя которые находятся в txt файле names.txt (Желательно что бы “Вася” в первом предложении и “Вася” во втором менялись на разные имена). И надо заменить слово магазине на какое-нибудь другое слово, прописанное в txt файле допустим slovo.txt. Есть у меня общий список слов allwords.txt вида
Вася:names.txt
Магазине: slovo.txt
По идее надо найти слово из текста в этом списке и получить название файла в котором содержутся слова для замены.
И в итоге получить предложение “ Юра купил в кинотеатре молоко. Мама сказала: «Ваня – ты молодец.”” Вот так.
Т.к. в php я еще новичок, поэтому начал писать скрипт и в итоге вообще запутался)
<?php
$text= ‘Вася купил в магазине молоко. Мама сказала: «Вася – ты молодец.”’;
//разделяем текст на предложения
$text=str_replace(",", " ", $text);
$text=str_replace(".", ". ", $text);
$text=str_replace(chr(13).chr(10), " ", $text);
$text=str_replace("\n", " ", $text);
$text=str_replace("\r", " ", $text);
$text=str_replace("\r\n", " ", $text);
$text=str_replace("\n\r", " ", $text);
$text=str_replace(chr(10), " ", $text);
$text=str_replace(chr(13), " ", $text);
$text=str_replace(" ", " ", $text);
$text=preg_replace("/[^a-zA-Zа-яА-Я0-9ё_ -\.,]*/", "", $text);
$text=explode(". ", $text);
//тут я уже начал тупить
for ($i=0; $i<count($text); $i++){ //запускаем цикл для предложений
$word = explode(" ", $text[$i]);//разделяем предложения на слова
//print_r ($word);
for ($m=0; $m<count($word); $m++){ //запускаем цикл для слов
$allwords = fopen('allwords.txt', 'r');// Открываем базу слов
$allwords = fread($poisk, filesize('allwords.txt'));
preg_match("/\b$word[$m]:(.*)\b/i", $allwords, $result);// Ищем слово в базе и находим имя файла для поиска замены.
if (!$result[1]){ // Если слово отсутствует то оставляем это слово без изменений и выводим, что его нет в списке
$text = str_replace($word[$m], $word[$m], $text[$i]);
echo "Слово <strong>\"$word[$m]\"</strong> отсутсвует в общем списке слов<br>";
}
else{
$result[1] = trim($result[1]);
$tmp = file("$result[1]"); //открываем файл со словами для замены
$text1 = preg_replace("/\b$word[$m]\b/", $tmp[rand(0, count($tmp)-1)], $text[$i]);//Заменяем исходное слово на рэндомное из его категории
Вот до сюда дошел и вроде уже скосячил где то) но теперь надо обратно собрать текст ))
Скорей всего я сделал все плохо и есть более простые способы, но не ругайте сильно я учусь) | |