<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Оптимизация регулярного выражения</title>
    <link>https://mobile.opennet.me/openforum/vsluhforumID8/7652.html</link>
    <description>Доброго времени суток уважаемые форумчане!&lt;br&gt;&lt;br&gt;Прошу помочь с оптимизацией процесса замены во всех ссылках href содержимого.&lt;br&gt;&lt;br&gt;Задачи следующие:&lt;br&gt;&lt;br&gt;1) Заменить все &quot;внешние&quot; ссылки в HTML документе (те что начинаются с &apos;http:&apos;)&lt;br&gt;2) Заменить все &quot;../../&quot; на &quot;/pathone/pathtwo/&quot;;&lt;br&gt;&lt;br&gt;Написал код, код рабочий, но если попадается HTML документ в котором несколько тысяч ссылок, сервер мягко выражаясь начинает кашлять :)&lt;br&gt;&lt;br&gt;&lt;br&gt;Мысли, ограничить список полученный из preg_match_all, только теми ссылками которые начинаются на &apos;http:&apos; или &apos;../../&apos; или &apos;../&apos;&lt;br&gt;Попытки допилить регулярку до данного условия, не увенчались успехом, в чем и прошу помочь.&lt;br&gt;&lt;br&gt;Заранее благодарен&lt;br&gt;&lt;br&gt;&#091;php&#093;&lt;br&gt;$matches = &apos;&apos;;&lt;br&gt;$pattern = &apos;/&amp;lt;a&#091;^&amp;gt;&#093;*href=&#092;&quot;?(&#091;^&#092;s&#092;&quot;&amp;gt;&#093;+?)&#092;&quot;?&#091;^&amp;gt;&#093;*&amp;gt;/ismU&apos;;&lt;br&gt;&lt;br&gt;$retval = preg_match_all($pattern, $content, $matches);&lt;br&gt;&lt;br&gt;if (is_array($matches&#091;1&#093;) ) &#123;&lt;br&gt;&lt;br&gt;foreach ($matches&#091;1&#093; as $href) &#123;&lt;br&gt;&lt;br&gt;$content = str_replace(&quot;../../&quot;, &quot;/pathone/pathtwo/&quot;, $content);&lt;br&gt;&lt;br&gt;if ( strpos($href, &apos;http://&apos;)) &#123;&lt;br&gt;$co</description>

<item>
    <title>Оптимизация регулярного выражения (svfolder)</title>
    <link>https://mobile.opennet.me/openforum/vsluhforumID8/7652.html#4</link>
    <pubDate>Tue, 11 Dec 2012 18:51:33 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;      fputs(to, stdout); &lt;br&gt;&amp;gt;    &#125; &lt;br&gt;&amp;gt;   &#125; &lt;br&gt;&amp;gt;    fputs(buff_p, stdout); &lt;br&gt;&amp;gt;  &#125; &lt;br&gt;&amp;gt;  fclose(stdin); &lt;br&gt;&amp;gt;  fclose(stdout); &lt;br&gt;&amp;gt;  return(0); &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; &#091;/code&#093; &lt;br&gt;&lt;br&gt;При всем уважении к вашей карме, ваш оффтоп (в данном контексте) с подобными оскорблениями в адрес сообщества php программистов, говно. &lt;br&gt;</description>
</item>

<item>
    <title>Оптимизация регулярного выражения (svfolder)</title>
    <link>https://mobile.opennet.me/openforum/vsluhforumID8/7652.html#3</link>
    <pubDate>Tue, 11 Dec 2012 18:46:57 GMT</pubDate>
    <description>&amp;gt; http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 &lt;br&gt;&amp;gt; http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html &lt;br&gt;&lt;br&gt;Большое спасибо, первый линк вполне помог, второй был лишним ибо я не настолько силен в ang )&lt;br&gt;</description>
</item>

<item>
    <title>Оптимизация регулярного выражения (name)</title>
    <link>https://mobile.opennet.me/openforum/vsluhforumID8/7652.html#2</link>
    <pubDate>Tue, 11 Dec 2012 14:07:44 GMT</pubDate>
    <description>http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454&lt;br&gt;http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html&lt;br&gt;</description>
</item>

<item>
    <title>Оптимизация регулярного выражения (pavlinux)</title>
    <link>https://mobile.opennet.me/openforum/vsluhforumID8/7652.html#1</link>
    <pubDate>Mon, 10 Dec 2012 22:13:23 GMT</pubDate>
    <description>&amp;gt; но если попадается HTML документ в котором несколько тысяч ссылок, &lt;br&gt;&amp;gt; сервер мягко выражаясь начинает кашлять :)&lt;br&gt;&lt;br&gt;ПХП - гавно :)&lt;br&gt;&#091;code&#093;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br&gt;#include &amp;lt;string.h&amp;gt;&lt;br&gt;&lt;br&gt;const char href&#091;&#093; = &quot;href=&#092;&quot;&quot;;&lt;br&gt;const char from&#091;&#093; = &quot;opennet&quot;;&lt;br&gt;const char to&#091;&#093; = &quot;linux.org&quot;;&lt;br&gt;&lt;br&gt;int main(void)&lt;br&gt;&#123;&lt;br&gt;char buffer&#091;BUFSIZ&#093; = &#123;0&#125;;&lt;br&gt;char *buff_p, *find_p;&lt;br&gt;size_t find_sz = strlen(from);&lt;br&gt;&lt;br&gt;while (fgets(buffer, BUFSIZ, stdin)) &#123;&lt;br&gt;buff_p = buffer;&lt;br&gt;while ((find_p = strstr(buff_p, href))) &#123;&lt;br&gt;while ((find_p = strstr(buff_p, from))) &#123;&lt;br&gt;while (buff_p &amp;lt; find_p)&lt;br&gt;fputc((int)*buff_p++, stdout);&lt;br&gt;  buff_p += find_sz;  &lt;br&gt;  fputs(to, stdout);&lt;br&gt;&#125;  &lt;br&gt;&#125;&lt;br&gt;  fputs(buff_p, stdout);&lt;br&gt;&#125;&lt;br&gt;fclose(stdin);&lt;br&gt;fclose(stdout);&lt;br&gt;return(0);&lt;br&gt;&#125;&lt;br&gt;&#091;/code&#093;&lt;br&gt;</description>
</item>

</channel>
</rss>
