Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 3.9.x will end* 10 May 2021 (12 months).
  • Bug fixes for security issues in 3.9.x will end* 8 May 2023 (36 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
   1  <?php
   2  
   3  /**

   4   * Validates an IPv4 address

   5   * @author Feyd @ forums.devnetwork.net (public domain)

   6   */
   7  class HTMLPurifier_AttrDef_URI_IPv4 extends HTMLPurifier_AttrDef
   8  {
   9  
  10      /**

  11       * IPv4 regex, protected so that IPv6 can reuse it.

  12       * @type string

  13       */
  14      protected $ip4;
  15  
  16      /**

  17       * @param string $aIP

  18       * @param HTMLPurifier_Config $config

  19       * @param HTMLPurifier_Context $context

  20       * @return bool|string

  21       */
  22      public function validate($aIP, $config, $context)
  23      {
  24          if (!$this->ip4) {
  25              $this->_loadRegex();
  26          }
  27  
  28          if (preg_match('#^' . $this->ip4 . '$#s', $aIP)) {
  29              return $aIP;
  30          }
  31          return false;
  32      }
  33  
  34      /**

  35       * Lazy load function to prevent regex from being stuffed in

  36       * cache.

  37       */
  38      protected function _loadRegex()
  39      {
  40          $oct = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; // 0-255

  41          $this->ip4 = "(?:{$oct}\\.{$oct}\\.{$oct}\\.{$oct})";
  42      }
  43  }
  44  
  45  // vim: et sw=4 sts=4