Solved

PHP string search and substitution, works with array, doesn't work with file

Posted on 2008-10-16
5
338 Views
Last Modified: 2012-05-05
I am trying to get a language filter work.  It searches the string to see if any words exist from the array, then it converts them to *.  I can get it to work with an array, however I can't get it to work when I try to use a file.
It is opening the file, it reads in the array, the line that doesn't work is this:
        if (stristr(trim($string),$curse_word)) {
//Foul Language Function Start
function language_filter($string) {
//  Array Works
//  $obscenities = array("curse","word"," foul ","language");
 
//  Array in File Doesn't Work
	$filename = "foul_language.txt";
	$fp = fopen($filename,'r'); 
	if (!$fp) {echo 'ERROR: Unable to open file.'; exit;} 
       $obscenities = @file($filename);
//  Substitute words
    foreach ($obscenities as $curse_word) {
        if (stristr(trim($string),$curse_word)) {
            $length = strlen($curse_word);
            for ($i = 1; $i <= $length; $i++) {
                $stars .= "*";
            }
            $string = eregi_replace($curse_word,$stars,trim($string));
            $stars = "";
        }
    }
    return $string;
}
//Foul Language Function Stop

Open in new window

0
Comment
Question by:baumli1
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
5 Comments
 

Author Comment

by:baumli1
ID: 22732994
The foul_language.txt contains the following lines, but it reads them in as an array properly.
"curse"
curse
 curse 

Open in new window

0
 

Author Comment

by:baumli1
ID: 22733206
It has something to do with the array in the text file.  I thought I could just put one entry per line, but its not reading more then 1 line.  If I just put one word in the file, with no return, it works, but as soon as I put in another line, it stops working.
0
 

Author Comment

by:baumli1
ID: 22733362
I did get it to work, but if someone else has any ideas as to how I should clean it up or impove it, I'll leave the question open.
//Foul Language Function Start
function language_filter($string) {
    $filename = "foul_language.txt";
    $fp = @fopen($filename, 'r'); 
    if ($fp) {  $obscenities = explode("\n", fread($fp, filesize($filename))); }
//  Substitute words
    foreach ($obscenities as $curse_word) {
        if (@stristr(trim($string),$curse_word)) {
            $length = strlen($curse_word);
            for ($i = 1; $i <= $length; $i++) {
                $stars .= "*";
            }
            $string = eregi_replace($curse_word,$stars,trim($string));
            $stars = "";
        }
    }
    return $string;
}
//Foul Language Function Stop

Open in new window

0
 
LVL 8

Accepted Solution

by:
aldanch earned 50 total points
ID: 22736740

function language_filter($string) {
	$badwords = array();
	$badwords = explode("\n", file_get_contents("/path/to/badwords.txt"));
	foreach($badwords as $word) {
		$string = str_replace($word, str_pad("*", strlen($word), "*", STR_PAD_LEFT), $string);
	}
	return $string;
}

Open in new window

0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
PHP query / monitor data from Telnet to MySQL 8 99
MySQL limit and not so limited 13 41
Put POST values into cookies. 14 35
PHP Underscores vs. Directory separators 5 29
Foreword (July, 2015) Since I first wrote this article, years ago, a great many more people have begun using the internet.  They are coming online from every part of the globe, learning, reading, shopping and spending money at an ever-increasing ra…
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to count occurrences of each item in an array.

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question