Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is 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