<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии: 15 регулярных выражений PHP в помощь веб-разработчику</title>
	<atom:link href="http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/feed/" rel="self" type="application/rss+xml" />
	<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/</link>
	<description>о моей работе в сети и не только</description>
	<lastBuildDate>Tue, 07 Feb 2012 16:57:23 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
	<item>
		<title>Автор: darkslave</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-19236</link>
		<dc:creator>darkslave</dc:creator>
		<pubDate>Sat, 24 Dec 2011 09:27:36 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-19236</guid>
		<description>разбор хтмл тегов -- увы задача не такая тривиальная как кажется.. т.к. в одном случае рег. выражение сработает, а в другом нет.. 
к примеру  #]*&gt;#
выдаст совсем не то, если в значении атрибута будет &gt;
можно было бы написать рег. выражение типа 
#&lt;([^\s/]+)((?:\s+[^\&quot;&#039;&gt;]+(?:\&quot;[^\&quot;]*\&quot;&#124;&#039;[^&#039;]*&#039;&#124;[^&gt;]*))*&#124;/)&gt;#   (взято из tinyMCE)
но оно тоже не всегда работает! хотя для 99% случаев подходит =)</description>
		<content:encoded><![CDATA[<p>разбор хтмл тегов &#8212; увы задача не такая тривиальная как кажется.. т.к. в одном случае рег. выражение сработает, а в другом нет..<br />
к примеру  #]*&gt;#<br />
выдаст совсем не то, если в значении атрибута будет &gt;<br />
можно было бы написать рег. выражение типа<br />
#&lt;([^\s/]+)((?:\s+[^\"'&gt;]+(?:\&raquo;[^\"]*\&raquo;|&#8217;[^']*&#8217;|[^&gt;]*))*|/)&gt;#   (взято из tinyMCE)<br />
но оно тоже не всегда работает! хотя для 99% случаев подходит =)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Pavluha.Net</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-8870</link>
		<dc:creator>Pavluha.Net</dc:creator>
		<pubDate>Wed, 19 Oct 2011 03:10:08 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-8870</guid>
		<description>Хотел написать скрипт на регулярных выражениях, чтобы определял, какой текст в noindex, а какой нормально индексируется. В общем, написал, но если встречается иерархическая структура noindex (а бывает и такое), то возникают проблемы. Например (тут 1о - первый открывающий тег, 1з - первый закрывающий и т.д.): текст 1о текст 2о текст 2з текст 3о текст 3з текст 1з текст индексируется 4о текст 4з. Тут скрипт определяет в noindex отрезок [1о - 4з], если паттерн жадный. Если же не жадный, то тогда в noindex: [1о - 2з], [3о - 3з] и [4о - 4з] (но текст между 2з и 3о тоже не должен индексироваться). В общем, жадный забирает слишком много, нежадный - слишком мало. Как найти золотую середину?</description>
		<content:encoded><![CDATA[<p>Хотел написать скрипт на регулярных выражениях, чтобы определял, какой текст в noindex, а какой нормально индексируется. В общем, написал, но если встречается иерархическая структура noindex (а бывает и такое), то возникают проблемы. Например (тут 1о &#8212; первый открывающий тег, 1з &#8212; первый закрывающий и т.д.): текст 1о текст 2о текст 2з текст 3о текст 3з текст 1з текст индексируется 4о текст 4з. Тут скрипт определяет в noindex отрезок [1о - 4з], если паттерн жадный. Если же не жадный, то тогда в noindex: [1о - 2з], [3о - 3з] и [4о - 4з] (но текст между 2з и 3о тоже не должен индексироваться). В общем, жадный забирает слишком много, нежадный &#8212; слишком мало. Как найти золотую середину?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Николай</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-8548</link>
		<dc:creator>Николай</dc:creator>
		<pubDate>Tue, 06 Sep 2011 17:02:08 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-8548</guid>
		<description>спасибо, отличная статья, нужная</description>
		<content:encoded><![CDATA[<p>спасибо, отличная статья, нужная</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: MyXa</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-8007</link>
		<dc:creator>MyXa</dc:creator>
		<pubDate>Thu, 14 Jul 2011 11:59:02 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-8007</guid>
		<description>юзай 
function checkurl($url) {
   // режем левые символы и крайние пробелы
   $url=trim(pregtrim($url));
   // если пусто - выход
   if (strlen($url)==0) return 1;
   //проверяем УРЛ на правильность
   if (!preg_match(&quot;~^(?:(?:https?&#124;ftp&#124;telnet)://(?:[a-z0-9_-]{1,32}&quot;.
   &quot;(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:com&#124;net&#124;&quot;.
   &quot;org&#124;mil&#124;edu&#124;arpa&#124;gov&#124;biz&#124;info&#124;aero&#124;inc&#124;name&#124;[a-z]{2})&#124;(?!0)(?:(?&quot;.
   &quot;!0[^.]&#124;255)[0-9]{1,3}\.){3}(?!0&#124;255)[0-9]{1,3})(?:/[a-z0-9.,_@%&amp;&quot;.
   &quot;?+=\~/-]*)?(?:#[^ &#039;\&quot;&amp;]*)?$~i&quot;,$url,$ok))
   return -1; // если не правильно - выход
   // если нет протокала - добавить
   if (!strstr($url,&quot;://&quot;)) $url=&quot;http://&quot;.$url;
   // заменить протокол на нижний регистр: hTtP -&gt; http
   $url=preg_replace(&quot;~^[a-z]+~ie&quot;,&quot;strtolower(&#039;\&#039;)&quot;,$url);
   return $url;
}</description>
		<content:encoded><![CDATA[<p>юзай<br />
function checkurl($url) {<br />
   // режем левые символы и крайние пробелы<br />
   $url=trim(pregtrim($url));<br />
   // если пусто &#8212; выход<br />
   if (strlen($url)==0) return 1;<br />
   //проверяем УРЛ на правильность<br />
   if (!preg_match(&laquo;~^(?:(?:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}&raquo;.<br />
   &laquo;(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:com|net|&raquo;.<br />
   &laquo;org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?&raquo;.<br />
   &laquo;!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:/[a-z0-9.,_@%&amp;".<br />
   "?+=\~/-]*)?(?:#[^ '\"&amp;]*)?$~i&raquo;,$url,$ok))<br />
   return -1; // если не правильно &#8212; выход<br />
   // если нет протокала &#8212; добавить<br />
   if (!strstr($url,&raquo;://&raquo;)) $url=&raquo;http://&raquo;.$url;<br />
   // заменить протокол на нижний регистр: hTtP -&gt; http<br />
   $url=preg_replace(&laquo;~^[a-z]+~ie&raquo;,&raquo;strtolower(&#8216;\&#8217;)&raquo;,$url);<br />
   return $url;<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Vermilion</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-7340</link>
		<dc:creator>Vermilion</dc:creator>
		<pubDate>Fri, 15 Apr 2011 08:24:36 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-7340</guid>
		<description>http://ru.wikipedia.org/wiki/Regex</description>
		<content:encoded><![CDATA[<p><a href="http://ru.wikipedia.org/wiki/Regex" rel="nofollow">http://ru.wikipedia.org/wiki/Regex</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Браток</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-7076</link>
		<dc:creator>Браток</dc:creator>
		<pubDate>Fri, 11 Mar 2011 08:14:30 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-7076</guid>
		<description>Скрипт для XHTML/XML работает только для строки, если внутри тега будет много строчный текст - регулярное выражение не сработает. Т.к &quot;.&quot; - работает только для строки. Для того чтобы регулярка отработала,  нужно добавить  модификаторы 
&lt;strong&gt;m&lt;/strong&gt; - Указывает на то, что текст, по которому ведется поиск, должен рассматриваться как состоящий из нескольких строкекста.
&lt;strong&gt;s&lt;/strong&gt; 	По умолчанию метасимвол &#039;.&#039; не включает в свое определение символ перевода строки. Указание этого модификатора снимает это ограничение.</description>
		<content:encoded><![CDATA[<p>Скрипт для XHTML/XML работает только для строки, если внутри тега будет много строчный текст &#8212; регулярное выражение не сработает. Т.к &laquo;.&raquo; &#8212; работает только для строки. Для того чтобы регулярка отработала,  нужно добавить  модификаторы<br />
<strong>m</strong> &#8212; Указывает на то, что текст, по которому ведется поиск, должен рассматриваться как состоящий из нескольких строкекста.<br />
<strong>s</strong> 	По умолчанию метасимвол &#8216;.&#8217; не включает в свое определение символ перевода строки. Указание этого модификатора снимает это ограничение.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Александр</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-5086</link>
		<dc:creator>Александр</dc:creator>
		<pubDate>Wed, 15 Dec 2010 11:10:24 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-5086</guid>
		<description>Не поможете разобраться со следующей задачей, а то никак не могу найти решение, за одно думаю мне это поможет чтоб понять

задача:

есть вариации 3x256/3x100,3 или  3x256x100,3   или  3x256 или или  3x256/100,3

как разобрать одним выражением?

Пробовал разные варианты, но обязательно, где-то косяк вылезет.

заранее спасибо</description>
		<content:encoded><![CDATA[<p>Не поможете разобраться со следующей задачей, а то никак не могу найти решение, за одно думаю мне это поможет чтоб понять</p>
<p>задача:</p>
<p>есть вариации 3&#215;256/3&#215;100,3 или  3x256x100,3   или  3&#215;256 или или  3&#215;256/100,3</p>
<p>как разобрать одним выражением?</p>
<p>Пробовал разные варианты, но обязательно, где-то косяк вылезет.</p>
<p>заранее спасибо</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Demon</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-3974</link>
		<dc:creator>Demon</dc:creator>
		<pubDate>Sun, 30 May 2010 00:46:32 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-3974</guid>
		<description>Забыли ; поставить в &lt;strong&gt;Поиск XHTML/XML тэгов с определенным значением атрибута&lt;/strong&gt; в строке &lt;strong&gt;11&lt;/strong&gt;</description>
		<content:encoded><![CDATA[<p>Забыли ; поставить в <strong>Поиск XHTML/XML тэгов с определенным значением атрибута</strong> в строке <strong>11</strong></p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Полезные ссылки &#124; Korobuj&#39;s Blog</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-3966</link>
		<dc:creator>Полезные ссылки &#124; Korobuj&#39;s Blog</dc:creator>
		<pubDate>Sat, 29 May 2010 21:22:20 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-3966</guid>
		<description>[...] Полезные&#160;ссылки  Posted on May 29, 2010  by  korobuj   блог по программированию,  вордпресс и регуляркам [...]</description>
		<content:encoded><![CDATA[<p>[...] Полезные&nbsp;ссылки  Posted on May 29, 2010  by  korobuj   блог по программированию,  вордпресс и регуляркам [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Юрий</title>
		<link>http://dreamhelg.ru/2010/02/15-regular-expression-for-web-developers/comment-page-1/#comment-3429</link>
		<dc:creator>Юрий</dc:creator>
		<pubDate>Sun, 07 Mar 2010 07:05:29 +0000</pubDate>
		<guid isPermaLink="false">http://dreamhelg.ru/?p=1881#comment-3429</guid>
		<description>Статья полезная, только не все примеры верны. Например про доменное имя. Согласно правилам имя может содержать только цифры, латиницу и дефис. При это первый и последний символ не может быть дефисом. На доменную зону накладывается ограничение от 2 до 4 символов латиницы. Имя дмена как правило не может состоять только из одного символа, обычно от двух или трех. На полное имя - зона, домены, под домены вместе с точками, также органичение - не более 63 символов.

Поэтому правильно проверять домен (не URL) так:
if (strlen($domain &lt; 64) &amp;&amp; preg_match(&#039;/^([0-9a-z]([0-9a-z\-])*[0-9a-z]\.)+[a-z]{2,4}$/i&#039;, $domain))
{
	echo (&quot;domain OK&quot;);
}
else
{
	echo (&quot;domain wrong&quot;);
}</description>
		<content:encoded><![CDATA[<p>Статья полезная, только не все примеры верны. Например про доменное имя. Согласно правилам имя может содержать только цифры, латиницу и дефис. При это первый и последний символ не может быть дефисом. На доменную зону накладывается ограничение от 2 до 4 символов латиницы. Имя дмена как правило не может состоять только из одного символа, обычно от двух или трех. На полное имя &#8212; зона, домены, под домены вместе с точками, также органичение &#8212; не более 63 символов.</p>
<p>Поэтому правильно проверять домен (не URL) так:<br />
if (strlen($domain &lt; 64) &amp;&amp; preg_match(&#039;/^([0-9a-z]([0-9a-z\-])*[0-9a-z]\.)+[a-z]{2,4}$/i&#039;, $domain))<br />
{<br />
	echo (&quot;domain OK&quot;);<br />
}<br />
else<br />
{<br />
	echo (&quot;domain wrong&quot;);<br />
}</p>
]]></content:encoded>
	</item>
</channel>
</rss>

