I am using preg match to get the user agent in the event its a mobile it uses a different template. In the event its not then it useses the standard one. However I am trying to code in two error messages if neither one of the templates are used and this is where I am having trouble. Please see below.


if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
{ 
 $cpgtpl->set_filenames(array('lance_b' => Module.'/hostm_b.html'));
 $cpgtpl->display('hostm_b');
}
 else
{


$cpgtpl->set_filenames(array('lance_b' => Module.'/host_b.html'));
$cpgtpl->display('host_b');
  }

if (array('lance_b' !=> Module.'/host_b.html'||Module.'/hostm_b.html));
{ 
     start_page(_BR_HOST.' :: '.$mid);
    messageBox(str_replace('{GOBACK}',_GOBACK,_BR_ERR116));
  }
}
else
{
  start_page(_BR_HOST.' :: '.$mid);
  messageBox(str_replace('{Killer}',_BR_HOST,str_replace('{GOBACK}',_GOBACK,BR_ERR103)));
}


This part below is what I keep stumbling on. How do I code this correctly to say if neither of these templates then one of these error messages.

if (array('lance_b' !=> Module.'/host_b.html'||Module.'/hostm_b.html));
    Simplyput;11031257 wrote:

    I am using preg match to get the user agent in the event its a mobile it uses a different template. In the event its not then it useses the standard one.

    In general, this is poor practice. I would recommend learning about responsive design. However, it's not "the problem," strictly speaking, so I won't harp on it...

    Simplyput;11031257 wrote:

    ... I am trying to code in two error messages if neither one of the templates are used

    I don't follow. Per your description above, there are only two choices: "mobile template" (IF there is a match) or "standard template" (IF NOT). Since the only condition on using the standard template is not using the mobile template, I don't see any possible circumstance where neither template would be used ...?

    Simplyput;11031257 wrote:

    This part below is what I keep stumbling on. How do I code this correctly to say if neither of these templates then one of these error messages.

    if (array('lance_b' !=> Module.'/host_b.html'||Module.'/hostm_b.html));

    I don't know. I don't have the slightest clue what you're trying to do with that code. It doesn't resemble anything you've described (or anything valid).

    SO:
    1) "if neither of these templates" ...what? What condition are you trying to test?
    2) "...then one of these error messages" ...which message? How do you want to choose between them?

      a month later

      Traq, why is it poor practice? What would you suggest?

        Traq, I have a similar question. Why did you say the OP's method was "poor practice?" Thank you.

          Well, first of all, someone is going to have to dive into that regular expression and modify it as soon as a new brand of mobile phone goes on the market. Or a new model of an existing brand. Or a new version of an existing model. That alone is bad enough. And that's before you try and get rid of any that aren't being used any more.

          And even if you manage to keep up with that, you're still only halfway done: you still need to know all the differences in behaviour among all the different brands and models and versions (otherwise why would you need to identify them?).

          For another reason: look at the user-agent string of your browser.
          http://webaim.org/blog/user-agent-string-history/

            all that.

            But, in fairness, it's not "the OP's method" - he saw it in a tutorial, or article, inherited code, or something, somewhere.

            UA sniffing never was a good idea, but it seemed like one at one time, and used to be (still is?) veryvery common.

            Read more.

              Write a Reply...