www.webdeveloper.com
Results 1 to 12 of 12

Thread: Number only validation

  1. #1
    Join Date
    Jul 2011
    Location
    Irish Republic
    Posts
    64

    Number only validation

    I am trying to get the preg_match '/[^0-9]/' thing below to validate or clear number only entries into a phone field. Am I on the right track as currently I cannot get it to work?

    PHP Code:
    public function validatePhone($phoneVal$phoneName) {
            if (
    strlen($phoneVal) <= 0) {
                
    $this->setError($phoneName"Phone Number Required");
            } else if (!
    preg_match('/[^0-9]/''',$phoneVal)) {
                
    $this->setError($phoneName"Valid Phone Number Required");
            }
        } 
    PHP Code:
    <p><label>Phone: <span class="required">Required</span>
              <input type="text" name="phone" class="textfield" value="<?php echo htmlentities($phone); ?>" />
              </label><span class="errors"><?php echo $phoneErr ?></span></p>

    Thanks in advance for your oversight.

  2. #2
    Join Date
    May 2004
    Location
    chennai, tamil nadu, India
    Posts
    451
    Try

    } else if (preg_match('/[^0-9]/', $phoneVal)) {
    Chris, Senior Developer,
    Php laravel developers,
    www.chrisranjana.com

  3. #3
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    22,335
    If you just want to validate that a string contains only digits:
    PHP Code:
    if(ctype_digit($string)) {
      
    // good
    } else {
      
    // bad

    "Well done....Consciousness to sarcasm in five seconds!" ~ Terry Pratchett, Night Watch

    How to Ask Questions the Smart Way (not affiliated with this site, but well worth reading)

    My Blog
    cwrBlog: simple, no-database PHP blogging framework

  4. #4
    Join Date
    Jul 2011
    Location
    Irish Republic
    Posts
    64
    Thanks guys, that has resolved the issue. I discovered that

    } else if (!is_numeric ($phoneVal)) {

    also does the job.

    In the circumstances which is the better, the !is_numeric or the preg_match approach ?

    Also, what impact does the ! have in/out such code ?

  5. #5
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    22,335
    "!" is essentially the same as "false ==". It inverts the Boolean result of what it precedes, so if is_numeric() returns false, then ! is_numeric() returns true; while if is_numeric() returns true, then ! is_numeric() returns false.
    "Well done....Consciousness to sarcasm in five seconds!" ~ Terry Pratchett, Night Watch

    How to Ask Questions the Smart Way (not affiliated with this site, but well worth reading)

    My Blog
    cwrBlog: simple, no-database PHP blogging framework

  6. #6
    Join Date
    Jul 2011
    Location
    Irish Republic
    Posts
    64
    Thanks for the lesson in opposites. Great answer.

  7. #7
    Join Date
    May 2004
    Location
    chennai, tamil nadu, India
    Posts
    451
    http://php.net/manual/en/function.is-numeric.php

    ........ +0123.45e6 is a valid numeric value. Hexadecimal notation (0xFF) is allowed too ......
    so not sure whether is_numeric is sufficient for validating phone numbers containing only numbers, I would go with preg_match.
    Chris, Senior Developer,
    Php laravel developers,
    www.chrisranjana.com

  8. #8
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    22,335
    Quote Originally Posted by chrisranjana View Post
    http://php.net/manual/en/function.is-numeric.php



    so not sure whether is_numeric is sufficient for validating phone numbers containing only numbers, I would go with preg_match.
    Or ctype_digit(), which will be more efficient if that's all you need to test for.
    "Well done....Consciousness to sarcasm in five seconds!" ~ Terry Pratchett, Night Watch

    How to Ask Questions the Smart Way (not affiliated with this site, but well worth reading)

    My Blog
    cwrBlog: simple, no-database PHP blogging framework

  9. #9
    Join Date
    Mar 2012
    Posts
    63
    Hi

    is_numeric is not work, because it gives true for "6.5" too

    so its best with preg_match only

    Let me know if any issues

    Thanks
    DS

  10. #10
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    22,335
    Quote Originally Posted by masterwin View Post
    Hi

    is_numeric is not work, because it gives true for "6.5" too

    so its best with preg_match only

    Let me know if any issues

    Thanks
    DS
    Or ctype_digit(), which will be more efficient if that's all you need to test for.
    "Well done....Consciousness to sarcasm in five seconds!" ~ Terry Pratchett, Night Watch

    How to Ask Questions the Smart Way (not affiliated with this site, but well worth reading)

    My Blog
    cwrBlog: simple, no-database PHP blogging framework

  11. #11
    Join Date
    May 2004
    Location
    chennai, tamil nadu, India
    Posts
    451
    Deleted
    Last edited by chrisranjana; 06-22-2012 at 10:40 AM. Reason: deleting this post as it contains "alpha" (http://stackoverflow.com/questions/1936504/php-regex-vs-ctype)
    Chris, Senior Developer,
    Php laravel developers,
    www.chrisranjana.com

  12. #12
    Join Date
    May 2004
    Location
    chennai, tamil nadu, India
    Posts
    451
    Quote Originally Posted by NogDog View Post
    "!" is essentially the same as "false ==". It inverts the Boolean result of what it precedes, so if is_numeric() returns false, then ! is_numeric() returns true; while if is_numeric() returns true, then ! is_numeric() returns false.
    Good ctype is good. I mean "late realization is always good"
    Last edited by chrisranjana; 06-22-2012 at 10:08 AM. Reason: edited
    Chris, Senior Developer,
    Php laravel developers,
    www.chrisranjana.com

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.11206 seconds
  • Memory Usage 2,984KB
  • Queries Executed 15 (?)
More Information
Template Usage (34):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (3)bbcode_php
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (12)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (12)postbit
  • (12)postbit_onlinestatus
  • (12)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (73):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates