Jump to content

Fatal error: Using $this when not in object context Error message


Go to solution Solved by lovephp,

Recommended Posts

sorry for the delay in reply, well here is my codes if i happen when i enter that symbol in title field only then i see the error which is referring to config.php file line 92 its the url slug function which i have and line 92 is this portion

 if($this->seems_utf8($string)){

 

the complete slug code is

 

function create_slug($string){
 $string = remove_accents($string);
 $string = symbols_to_words($string);
 $string = strtolower($string);
 $space_chars = array(
  " ",
  "…",
  "–",
  "—",
  "/",
  "\\",
  ":",
  ";",
  ".",
  "+",
  "$",
  "%",
  "#",
  "~",
  "_",
  "|",
 );
 foreach($space_chars as $char){
  $string = str_replace($char, '-', $string);
 }
 $string = preg_replace('/([^a-zA-Z0-9\-]+)/', '', $string);
 $string = preg_replace('/-+/', '-', $string);
 if(substr($string, -1)==='-'){
  $string = substr($string, 0, -1);
 }
 if(substr($string, 0, 1)==='-'){
  $string = substr($string, 1);
 }
 return $string;
}
function remove_accents($string) {
 if(!preg_match('/[\x80-\xff]/', $string)){
  return $string;
 }
 if($this->seems_utf8($string)){
  $chars = array(
  chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
  chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
  chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
  chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
  chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
  chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
  chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
  chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
  chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
  chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
  chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
  chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
  chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
  chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
  chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
  chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
  chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
  chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
  chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
  chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
  chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
  chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
  chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
  chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
  chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
  chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
  chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
  chr(195).chr(191) => 'y',
  chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
  chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
  chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
  chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
  chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
  chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
  chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
  chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
  chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
  chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
  chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
  chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
  chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
  chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
  chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
  chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
  chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
  chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
  chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
  chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
  chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
  chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
  chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
  chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
  chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
  chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
  chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
  chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
  chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
  chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
  chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
  chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
  chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
  chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
  chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
  chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
  chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
  chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
  chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
  chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
  chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
  chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
  chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
  chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
  chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
  chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
  chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
  chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
  chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
  chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
  chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
  chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
  chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
  chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
  chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
  chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
  chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
  chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
  chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
  chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
  chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
  chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
  chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
  chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
  chr(226).chr(130).chr(172) => 'E',
  chr(194).chr(163) => '');
  $string = strtr($string, $chars);
 } else {
  $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
   .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
   .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
   .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
   .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
   .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
   .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
   .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
   .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
   .chr(252).chr(253).chr(255);
  $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
  $string = strtr($string, $chars['in'], $chars['out']);
  $double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
  $double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
  $string = str_replace($double_chars['in'], $double_chars['out'], $string);
 }
 return $string;
}
function symbols_to_words($output){
 $output = str_replace('@', ' at ', $output);
 $output = str_replace('%', ' percent ', $output);
 $output = str_replace('&', ' and ', $output);
 return $output;
}

 

i found it online its not written by me

 

and here is how i post

 

$jtitle = $_POST['title'];
$jcompanyname = $_POST['companyname'];
$jcompanymobile = $_POST['companymobile'];
$jcompanyemail = $_POST['companyemail'];
$jarea = $_POST['area'];
$jcategory = $_POST['category'];
$jdescription = $_POST['description'];
$jurl = strtolower(''.create_slug(substr($jtitle, 0,90)).'/');

if(!isset($error)){
    try {
        $stmt = $db->prepare('INSERT INTO table (posterID, tbl_title,tbl_company_name,tbl_company_mobile,tbl_company_email,tbl_area,tbl_category,tbl_description,tbl_url) VALUES (:posterID, :tbl_title, :tbl_company_name, :tbl_company_mobile, :tbl_company_email, :tbl_area, :tbl_category,  :tbl_description, :tbl_url)');

        $stmt->execute(array(
                     ':posterID' => $uid,
                     ':tbl_title' => $jtitle,
                     ':tbl_company_name' => $jcompanyname,
                     ':tbl_company_mobile' => $jcompanymobile,
                     ':tbl_company_email' => $jcompanyemail,
                     ':tbl_area' => $jarea,
                     ':tbl_category' => $jcategory,
                     ':tbl_description' => $jdescription,
                     ':tbl_url' => $jurl    
         ));                 
                  
        $stmt = $db->prepare('INSERT INTO floodcontrol (memberID) VALUES (:memberID)');
        $stmt->execute(array(':memberID' => $uid
         ));                            
                               
        unset($jtitle, $jcompanyname, $jcompanymobile, $jcompanyemail, $jarea, $jcategory, $jdescription, $jurl);
        
        header("Location: ".DIR."".$seturl."");
        exit();
        
        } catch(PDOException $e) {
            $error[] = $e->getMessage();
        }
    }

Edited by lovephp

Wherever you got that code from, it expects to be part of a class which has a seems_utf8 function in it. You need to either get the entire class and use it or modify the code to not use $this.

 

If you have a seems_utf8 function, just change the call to remove $this-> and it may work (depending on what the seems_utf8 function looks like). If you don't have that function you'll need to get it.

 

Since it seems like what you may be trying to do is convert the title to ascii for use as a URL slug, you could also just try removing all that and using iconv to convert from the input charset to ascii. For example:

 

<?php

function create_slug($title){
    //Convert to ascii
    $slug = iconv('windows-1252', 'ascii//TRANSLIT//IGNORE', $title);

    //Lowercase and limit length
    $slug = strtolower(substr($slug, 0, 90));

    //Replace whitespace with a -
    $slug = preg_replace('/\s+/', '-', $slug);

    //Remove non a-z, 0-9, - characters.
    $slug = preg_replace('/[^a-z0-9-]+/', '', $slug);

    //Combine multiple - into a single -
    $slug = preg_replace('/-+/', '-', $slug);

    //Strip leading or trailing -
    $slug = trim($slug, '-');

    return $slug;
}
You may need to adjust your in charset.
  • Like 1

How about narrowing it down and just show the 10 lines before and after the problem line?

 

PS - why do you expect the forum to solve a problem that you didn't write?

PS - why do you expect the forum to solve a problem that you didn't write?

 

agree that is true. i got hold of the situation now thanks thought :)

  • Solution

Wherever you got that code from, it expects to be part of a class which has a seems_utf8 function in it. You need to either get the entire class and use it or modify the code to not use $this.

 

If you have a seems_utf8 function, just change the call to remove $this-> and it may work (depending on what the seems_utf8 function looks like). If you don't have that function you'll need to get it.

 

Since it seems like what you may be trying to do is convert the title to ascii for use as a URL slug, you could also just try removing all that and using iconv to convert from the input charset to ascii. For example:

 

<?php

function create_slug($title){
    //Convert to ascii
    $slug = iconv('windows-1252', 'ascii//TRANSLIT//IGNORE', $title);

    //Lowercase and limit length
    $slug = strtolower(substr($slug, 0, 90));

    //Replace whitespace with a -
    $slug = preg_replace('/\s+/', '-', $slug);

    //Remove non a-z, 0-9, - characters.
    $slug = preg_replace('/[^a-z0-9-]+/', '', $slug);

    //Combine multiple - into a single -
    $slug = preg_replace('/-+/', '-', $slug);

    //Strip leading or trailing -
    $slug = trim($slug, '-');

    return $slug;
}
You may need to adjust your in charset.

 

thanks mate :)

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.