Hi,
I have a script with some options.
I use regex to replace patterns in strings, but I seem to be using them incorrectly, because they very quickly break my max_memory_limit (by several orders of magnitude)
This is strange, because I'm dealing with maybe 10 simultaneous strings of 500 words max.
I'm clearly causing some kind of overly recursive syntax, but I can't see how...
Any help you could give me to programme this better (or tell me where I'm going wrong) would be most appreciated
Code: [Select]
$string = "this would be about 500 words long";
$parts = $string; // $parts would normally be a substring of $string;
wp_wordmash($parts);
wp_synonymize($string);
wp_keyword2url($string);
//html stuff follows here...
function wp_wordmash($parts) {
$wordlist = file_get_contents('dictionary.txt', true);
$dictionary = explode(",", $wordlist);
$htmldictionary = array();
foreach($dictionary as $dicword) {
$htmldictionary[] = wp_htmlcode($dicword);
$htmldictionary_u[] = wp_htmlcode(strtoupper($dicword));
$htmldictionary_u1[] = wp_htmlcode(ucfirst($dicword));
$htmldictionary_ucwords[] = wp_htmlcode(ucwords($dicword));
}
for($i=0;$i<count($dictionary);$i++){
$parts = preg_replace("/b$dictionary[$i]b/", $htmldictionary[$i], $parts);
$parts = preg_replace("/b" . strtoupper($dictionary[$i]) . "b/", $htmldictionary_u[$i], $parts);
$parts = preg_replace("/b" . ucfirst($dictionary[$i]) . "b/", $htmldictionary_u1[$i], $parts);
$parts = preg_replace("/b" . ucwords($dictionary[$i]) . "b/", $htmldictionary_ucwords[$i], $parts);
}
return $parts;
}
function wp_htmlcode($string) {
$buffer= NULL;
for($i=0;$i<strlen($string);$i++) {
$buffer .= "&#" . ord($string{$i}) . ";";
}
return $buffer;
}
function wp_synonymize($string){
$buffer=$string;
$synonymfile = file_get_contents('synonyms.txt', true);
$synonyms = explode("n", $synonymfile);
for($i=0;$i<count($synonyms);$i++){
$synonymlist = explode(",", $synonyms[$i]);
$oldword = $synonymlist[0];
$synonym = $synonymlist[1];
$synonym = str_replace("r", '', $synonym);
$buffer = preg_replace("/b$oldwordb/", $synonym, $buffer);
$buffer = preg_replace("/b" . strtoupper($oldword) . "b/", strtoupper($synonym), $buffer);
$buffer = preg_replace("/b" . ucfirst($oldword) . "b/", ucfirst($synonym), $buffer);
$buffer = preg_replace("/b" . ucwords($oldword) . "b/", ucwords($synonym), $buffer);
}
return $buffer;
}
function wp_keyword2url($string){
$buffer=$string;
$keyword2urlfile = file_get_contents('keyword2url.txt', true);
$keywords = explode("n", $keyword2urlfile);
for($i=0;$i<count($keywords);$i++){
$keywordlist = explode(",", $keywords[$i]);
$keyword = $keywordlist[0];
$url = $keywordlist[1];
$url = str_replace("r", '', $url);
$buffer = preg_replace("/b$keywordb/", '<a href = "' . $url . '">' . $keyword . '</a>', $buffer);
$buffer = preg_replace("/b" . strtoupper($keyword) . "b/", '<a href = "' . $url . '">' . strtoupper($keyword) . '</a>', $buffer);
$buffer = preg_replace("/b" . ucfirst($keyword) . "b/", '<a href = "' . $url . '">' . ucfirst($keyword) . '</a>', $buffer);
$buffer = preg_replace("/b" . ucwords($keyword) . "b/", '<a href = "' . $url . '">' . ucwords($keyword) . '</a>', $buffer);
}
return $buffer;
}
As I say, the string passed to these functions is typically < 500 words.
I've also included the comparison files (dictionary.txt, synonyms.txt and keyword2URL.txt)...HERE
I hope you can help...I'm 99% certain I'm using preg_replace() wrong...because if I substitute it with str_replace() then my memory issues disappear.
Problem is, I like preg_replace because it gives me the word border functionality.
I'm just obviously doing it wrong!
Any thoughts?
how do i make new line after *
First check this page here. and you see my report. Im pulling form a mysql db. I want to beable to make a new line before each * Also why does some characters come out all funky?Hers my code.. I dont
Adding Different Numbers From MySQL
Basically I have a mysql database with a couple prices as the following:9.999.999.9949.9924.5024.50How can I add these numbers and display the total from a mysql database?
Change Sort Order to Display Newest File First
Hi Guys,I have a page that sorts the contents (PDFs) of a directory and displays them on the webpage chronologically from the oldest (at top) to the newest (at bottom).I'd like to reverse this display
Unable to customise toolbar in FCK
<FCKeditorV2:FCKeditor ID="FCKQuesreply" runat="server" ToolbarSet="MyToolbar" BasePath="~/fckeditor/" SkinPath="skins/silver/" CustomConfigurationsPath="~/fckeditor/fckconfig.js"
How to change www in url with a specified name
HiI'm trying to change the url http://www.sitename.com/apparels to something like belowhttp://apparels.sitename.com/apparels in PHP.If anybody can help me with the code for the same or provide links
writing my own sobel filter convolution - something is wrong
I am trying to keep it very simple, I cant see anything wrong with my logic, could anybody help point me to the right direction?!! Code: { int Shorizontal[] = {-1, 0, 1, -2, 0, 2, -1, 0, 1}; int
Best way to cross matching large datasets
Hi,Im running a script where am I cross matching about 200 000 data sets with each other. Each data set consists of 8 parameters and I want to count all datasets which have similar or the same
registration form
first time posting. did some searches but didnt find exactly what i am looking for. dont flame cause i am posting in the wrong area. I am starting from scratch with a new registration form for a
Stats of viewers
Hello. I have a website in php and people can login. I want to make an admin control panel where u can see how many people are currently logged in and also how many people in total (including the ones
Multiple Options for a Single Page
For this example I want to use the Handlers option which is under Fed Admin and all the related coding to the handlers option is found on the handlers.php page which includes a list of handlers with a