<?xml version="1.0" encoding="UTF-8" ?><oembed><version>1.0</version><provider_name>Чудо{вищные} заметки</provider_name><provider_url>https://miracle.rpz.name</provider_url><author_name>MiRacLe</author_name><author_url>https://miracle.rpz.name/author/miracle/</author_url><title>ip in range</title><html>&lt;!-- wp:paragraph --&gt;
&lt;p&gt;Возникла производственная необходимость проверить входит ли &lt;span title=&quot;ipv4 (уточняю для зануд)&quot;&gt;ip&lt;/span&gt; в несколько разрешённых подсетей. Есть проверенное временем решение. В комментариях к &lt;a href=&quot;https://www.php.net/ip2long&quot;&gt;ip2long&lt;/a&gt; есть примерно олимпиард &quot;математических&quot; вариантов проверки. Но в этот раз код должен в выполняться в &quot;настроечном&quot; файле, до загрузки всевозможных библиотек, т.е. проверка предполагалась быть максимально &quot;&lt;span title=&quot;«домохозяин» должен иметь возможность изменять диапазон адресов без риска разрушения «домохозяйства»&quot;&gt;домохозяйковой&lt;/span&gt;&quot; - &lt;strong&gt;желательно&lt;/strong&gt; без &lt;a href=&quot;https://pgregg.com/projects/php/ip_in_range/ip_in_range.phps&quot;&gt;как-либо монструозных функций&lt;/a&gt; и нашёлся гениальный на мой взгляд способ с использованием &lt;a href=&quot;https://www.php.net/version_compare&quot;&gt;version_compare&lt;/a&gt;:&lt;/p&gt;
&lt;!-- /wp:paragraph --&gt;

&lt;!-- wp:code {&quot;className&quot;:&quot;php&quot;} --&gt;
&lt;pre class=&quot;wp-block-code php&quot;&gt;&lt;code&gt;if (version_compare($low_ip, $ip) + version_compare($ip, $high_ip) === -2) {
    echo &quot;in range&quot;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;!-- /wp:code --&gt;

&lt;!-- wp:paragraph --&gt;
&lt;p&gt;Это как стереокартинки - увидеть в &lt;code&gt;127.128.129.130&lt;/code&gt; &lt;em&gt;&quot;PHP-standardized&quot; version number strings&lt;/em&gt; дано не каждому...&lt;/p&gt;
&lt;!-- /wp:paragraph --&gt;</html><type>rich</type></oembed>