Търсене във файл

freshbg

Registered
Файлът се казва file.txt и във него има записани 5-6 думи.
Имам база данни със големи текстове, искам ако във текста има дума от файлът file.txt да се замества със да речем "ЗАМЕСТЕНО". Ето пример по който да работите:

$file = "file.txt"; // да речем че искам да замести думите "много" и "още" със str_replace
$text = "Мноого дълъг текст ама много дълъг ужас направо ... ейй още ли има бе няма ли край този текст ?!";

давам +1
 
Тази може да ти повогне:


Код:
<?php
$directory = opendir('.');
$templatename='tourist';//Тука пишете името което сте избрали
while ($file = readdir($directory))
{
$filenames[] = $file;
}
foreach ($filenames as $file)
{
if($file!='.'&&$file!='..'&&$file!='admin'&&$file!='images'&&$file!='dir.php' )
{
$filegolemina=filesize($file);
$fp = fopen ($file ,"r");

$text=fread($fp,$filegolemina);
fclose($fp);
$text=str_replace("subSilver",$templatename,$text);
$fp = fopen ($file ,"w");
fwrite($fp, $text );
fclose($fp);
}


}
echo "OK";

?>

Взех я от http://web-tourist.net/login/login/view.php?st=637 само замени там каквото ти трябва..
 
Код:
<?php
$dir = "./папка/";
$open = opendir($dir);
while($file = readdir($open)){
if("$file" !== "." and "$file" !== ".."){
$ext = explode(".","$file");
$ext = strtolower(end($ext));
if("$ext" == "txt"){
$content = file_get_contents("$dir$file");
$new = str_replace("какво да махне","какво да сложи","$content"); # от тук си нагласяш, какво да маха и какво да слага
file_put_contents("$dir$file","$new");
}
}
}
?>
 
нетрябва да нагласям какво да маха, то трябва само да си взима информация за всичките неща във текстовия документ. След това да стане примерно ако е малнало думата ОЩЕ да стане <a href="#">ОЩЕ</a>
 
Ще се взима от текстовия файл. Там на всеки ред съм написал някоя дума и идеята ми е от там да се взима тя.
а да речем че не е с файл а със база данни: ето направих го така:

function replace($input) {
$query = mysql_query("SELECT * FROM `dumi` LIMIT 0,100");
while($r = mysql_fetch_array($query)) {
$word = $r['word'];
$output = str_replace($word, '<a href="#">'.$r[word].'</a>', $input);
}
return $output;
}

Обаче замества само последната дума от базата а не всички, може ли да го оправите ?

ДАВАМ ТОЧКА.
 
Датабаза ( файл ) с нецензурни думи!
$query = mysql_query("SELECT * FROM `dumi` LIMIT 0,100");
while($r = mysql_fetch_array($query, MYSQL_NUM)) {
$word = $r['word'];
}
Всяка дума бива запазвана под КЛЮЧ В МАСИВ

Врътваме всички думи
foreach ( $word as $data ) {
$output = str_replace($data, '<a href="#">'.$data.'</a>', $input);
}
След всяко врътване, ако бъде намерена дума, тя бива заместена с <a href="">дума</a>
 
g9m29 каза:

Имаш малка грешчица.
$word трябва да е масив, а си пропуснал скобичките.

Нека автора си го смени на $word[] или редактирай мнението си, че като го копира и няма да се усети.
 
Всъщност самия mysql_fetch_array(), и в частност 2ри параметър MYSQL_NUM. връща масив с ключ число и стойност поле.

Извинявам се, незнам защо се заблудих, масивът е $r, а пък стойностите трябва да са MYSQL_ASSOC;
 
Датабаза ( файл ) с нецензурни думи!
$query = mysql_query("SELECT * FROM `dumi` LIMIT 0,100");
while($r = mysql_fetch_array($query, MYSQL_ASSOC)) {
$word[] = $r['word'];
}
Всяка дума бива запазвана под КЛЮЧ В МАСИВ

Врътваме всички думи
foreach ( $word as $data ) {
$output = str_replace($data, '<a href="#">'.$data.'</a>', $input);
}
След всяко врътване, ако бъде намерена дума, тя бива заместена с <a href="">дума</a>

Добре, както спомена, по-горе потребителя, опитай така!
 

Горе