Hi Karl, just something to consider: http://www.youtube.com/watch?v=Q3SFVfDIS5k (Matt Cutts says to use hyphens over underscores; not sure how up to date this information is as I don't follow SEO stuff that closely)
On May 21, 4:33 pm, Admin <[email protected]> wrote: > Thanks for that Simon... > > We are currently restricted to PHP 4, and that code is part of a > function already... the full function is: > > function seolink($prodid) { // Crafts an SEO-friendly text-embedded string > for URL... > $db = mysql_connect(-stuff-) or die("Could not connect to server!"); > mysql_select_db("-stuff-",$db); > $prodsql = "SELECT ProdName FROM product WHERE ProdID='$prodid'"; > $prodres = mysql_query($prodsql); > $prodrow = mysql_fetch_array($prodres); > > if($prodrow) { // If we have a valid entry... > $prodname = $prodrow['ProdName']; > > $killarray = array('and', '&', 'the', 'of', '-', ':', '.', > '?', '\'', '!', '(', ')', '0','1','2','3','4','5','6','7','8','9'); // List > of undesirables... > $linkname = str_replace(' ', '_', > str_replace($killarray,'',makeutf8($prodname))); // Removes undesirables and > replaces them with underscores... > while(strpos($linkname,'__') !== FALSE) { > $linkname = str_replace('__', '_', $linkname); // > removes multiple consecutive spacers... > } > $seo_link = $prodid . "-" . $linkname; > > return($seo_link); // Send back final string... > } else { > return(''); //... or empty string if there is no listing > under this ProdID. > } > > } > > So... not too sure how your code would plug in here... > > > > > > > > > > > preg_replace(array_map(function($arg) { return '/\b'. > > preg_quote($arg) . '\b/'; }, $killarray), ' ', makeutf8($prodname)); > > > That uses closures so requires PHP 5.3. If you can't use that, move > > the function elsewhere, give it a name and pass that name as a > > string to array_map(). > > > What this is doing is using the word boundary class to only match > > complete words. array_map() just loops over the given array, > > applies the given function to each item and returns all the return > > values in an array. > > > On 21/05/2011, at 2:26 PM, Admin wrote: > > >> Possibly OT, but think this group may have the solution... > > >> Given a variable of $prodname = "Jane and the Dragon : Fair > >> Weather Friends"; > > >> And the operation code: > >> $killarray = array('and', '&', 'the', 'of', '-', ':', '.', '?', > >> '\'', '!', '(', ')'); $linkname = str_replace(' ', '_', > >> str_replace($killarray," ",makeutf8($prodname))); // Removes all > >> surplus non-essential pieces, and inserts http-safe spacers > >> while(strpos($linkname,'__') !== FALSE) { > >> $linkname = str_replace('__', '_', $linkname); // Remove multiple > >> 'spacers' } > > >> I get a result of $linkname = "Jane_Dragon_Fair_Wear_Friends" > > >> As you can see, it's stealing the "the" out of "Weather" and > >> making it "Wear"... > > >> If I include spaces in the $killarray items, the whole thing > >> turns even worse, with virtually no _ separators... > > >> I have tried having 'the ' and ' the' (ditto for other words in > >> the $killarray too) but then it still does the same thing with > >> words such as 'anders', 'sand', 'offer', 'theory' and 'menthe'... > > --- > Karl -- NZ PHP Users Group: http://groups.google.com/group/nzphpug To post, send email to [email protected] To unsubscribe, send email to [email protected]
