<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>preg_match() &#8212; ploshadka.net</title>
	<atom:link href="https://ploshadka.net/tag/preg_match/feed/" rel="self" type="application/rss+xml" />
	<link>https://ploshadka.net</link>
	<description>Мир интернет технологий</description>
	<lastBuildDate>Sat, 08 Aug 2020 18:59:51 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1</generator>
	<item>
		<title>Функция проверки на стоп слова на PHP и JavaScript</title>
		<link>https://ploshadka.net/php-javascript-stop-words/</link>
					<comments>https://ploshadka.net/php-javascript-stop-words/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Tue, 01 Jan 2019 08:00:56 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[indexOf]]></category>
		<category><![CDATA[length]]></category>
		<category><![CDATA[preg_match()]]></category>
		<category><![CDATA[strlen]]></category>
		<category><![CDATA[test]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=4435</guid>

					<description><![CDATA[Проверяем текст на вхождение ключевых слов на PHP и JavaScript. Например, мы хотим запретить написание адресов сайта в имени пользователя. Как проверить на стоп слова PHP стоп слова function validateName($name) { &#160; &#160; $bad_words = '/\.com&#124;\.ru&#124;\.net/i'; &#160; &#160; $match =...]]></description>
										<content:encoded><![CDATA[<p>Проверяем текст на вхождение ключевых слов на <strong>PHP</strong> и <strong>JavaScript</strong>. Например, мы хотим запретить написание адресов сайта в имени пользователя. <span id="more-4435"></span></p>
<h2>Как проверить на стоп слова</h2>
<h3>PHP стоп слова</h3>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">function validateName($name)<br />
{<br />
&nbsp; &nbsp; $bad_words = '/\.com|\.ru|\.net/i';<br />
&nbsp; &nbsp; $match = preg_match($bad_words, $name);<br />
<br />
&nbsp; &nbsp; if($match) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return __('Неверно заполненное поле', 'ploshadka.net');<br />
&nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return true;<br />
&nbsp; &nbsp; }<br />
}</div></div>
<h3>JS стоп слова</h3>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">var badWords = /\.com|\.ru|\.net/i;<br />
<br />
if (name.indexOf('first_name') !== -1) {<br />
&nbsp; &nbsp; if (badWords.test(v.value)) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; valid = false;<br />
&nbsp; &nbsp; &nbsp; &nbsp; alert('Неверно заполненное поле');<br />
&nbsp; &nbsp; &nbsp; &nbsp; return;<br />
}</div></div>
<h2>Как проверить на длину символов</h2>
<p>Также можно запретить использование любой точки или проверить слово на длину символов:</p>
<h3>PHP проверка длины символов</h3>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">function validateName($name)<br />
{<br />
&nbsp; &nbsp; $badWords = '/\d|\.|точка/i';<br />
&nbsp; &nbsp; $match = preg_match($badWords, $name);<br />
<br />
&nbsp; &nbsp; if($match || strlen($name) &gt; 25 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return __('Неверно заполненное поле', 'ploshadka.net');<br />
&nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return true;<br />
&nbsp; &nbsp; }<br />
}</div></div>
<h3>JS проверка длины символов</h3>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">var badWords = /\d|\.|точка/i;<br />
<br />
if (name.indexOf('first_name') !== -1) {<br />
&nbsp; &nbsp; if (badWords.test(v.value) || v.value.length &gt; 25) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; valid = false;<br />
&nbsp; &nbsp; &nbsp; &nbsp; alert('Неверно заполненное поле');<br />
&nbsp; &nbsp; &nbsp; &nbsp; return;<br />
&nbsp; &nbsp; }<br />
}</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/php-javascript-stop-words/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Функция записи данных из контента в произвольное поле</title>
		<link>https://ploshadka.net/funkcija-zapisi-dannykh-iz-kontenta-v-proizvolnoe-pole/</link>
					<comments>https://ploshadka.net/funkcija-zapisi-dannykh-iz-kontenta-v-proizvolnoe-pole/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Tue, 01 May 2018 08:00:48 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[preg_match()]]></category>
		<category><![CDATA[Произвольные поля]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=3268</guid>

					<description><![CDATA[Понадобилось мне записывать в произвольное поле данные из контента поста. Этот php код можно использовать и для записи данных из парсеров. Для этого нужно будет в этот код подставить другие переменные и значения, но каркас останется и он приведен в...]]></description>
										<content:encoded><![CDATA[<p>Понадобилось мне записывать в произвольное поле данные из контента поста. Этот php код можно использовать и для записи данных из парсеров. Для этого нужно будет в этот код подставить другие переменные и значения, но каркас останется и он приведен в качестве примера. <span id="more-3268"></span></p>
<p>Я уже рассказывал о регулярных выражениях и приводил <a href="https://ploshadka.net/regular-expressions/">пример работы PHP функции preg_match</a>. Здесь она тоже будет использоваться.</p>
<p>Код такой:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
<br />
preg_match(&quot;/&lt;h2&gt;(.*?)&lt;\/h2&gt;/s&quot;, $post-&gt;post_content, $author_name);<br />
<br />
$post_id = $GLOBALS['post']-&gt;ID;<br />
<br />
$book_author_update = get_post_meta( $post-&gt;ID, 'book_author', true );<br />
<br />
if( empty( $book_author_update) ) {<br />
<br />
&nbsp; &nbsp; update_post_meta( $post_id, 'book_author', $author_name[1] );<br />
<br />
} ?&gt;</div></div>
<p>Принцип работы следующий. Сначала мы ищем с помощью <strong>preg_match</strong> данные в записи между тегами h2. Затем мы создаем переменную <strong>book_author_update</strong>, которой присваиваем значения произвольного поля с именем <strong>book_author</strong>. А дальше проверяем, если поле пустое, то записываем в него какие-то данные. Если там уже содержатся данные, то ничего не трогаем.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/funkcija-zapisi-dannykh-iz-kontenta-v-proizvolnoe-pole/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Удаленный вывод содержимого файла на PHP</title>
		<link>https://ploshadka.net/php-remote-output-file-contents/</link>
					<comments>https://ploshadka.net/php-remote-output-file-contents/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 05 Feb 2018 13:51:43 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[preg_match()]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=3765</guid>

					<description><![CDATA[В заметке приводится несколько примеров удалённого вывода файла на php. Разбираем, как вывести содержимое файла на сервере, когда он находится на другом удаленном сервере. Выводим содержимое текстового файла на главной странице: &#60;?php $url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']; function is_main($url) { &#160; &#160;return...]]></description>
										<content:encoded><![CDATA[<p>В заметке приводится несколько примеров удалённого вывода файла на php. Разбираем, как вывести содержимое файла на сервере, когда он находится на другом удаленном сервере. <span id="more-3765"></span></p>
<p>Выводим содержимое текстового файла на главной странице:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
$url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'];<br />
function is_main($url) {<br />
&nbsp; &nbsp;return preg_match(&quot;/^(http:\/\/)?([\w-]+\.)+[a-z]{2,4}(\/|\/[\w-]*\.[a-z]{1,10})?$/i&quot;, $url);<br />
}<br />
if (is_main($url))<br />
{<br />
$host = &quot;www.ploshadka.net&quot;;<br />
$link = &quot;/folder/ploshadka.txt&quot;;<br />
$fp = @fsockopen($host, 80, $errno, $errstr, 30);<br />
if ($fp) {<br />
&nbsp; &nbsp;$out = &quot;GET &quot;.$link.&quot; HTTP/1.0\r\n&quot;;<br />
&nbsp; &nbsp;$out .= &quot;Host: &quot;.$host.&quot;\r\n&quot;;<br />
&nbsp; &nbsp;$out .= &quot;Connection: Close\r\n\r\n&quot;;<br />
&nbsp; &nbsp;@fwrite($fp, $out);<br />
&nbsp; &nbsp;$text = &quot;&quot;;<br />
&nbsp; &nbsp;do {<br />
&nbsp; &nbsp; &nbsp; &nbsp;$text .= @fgets ( $fp, 4096 );<br />
&nbsp; &nbsp;} while ( strpos ( $text, &quot;\r\n\r\n&quot; ) === false );<br />
&nbsp; &nbsp;$ferror = strpos($text, &quot;404 Not Found&quot;);<br />
&nbsp; &nbsp;$text = &quot;&quot;;<br />
&nbsp; &nbsp;if ($ferror === FALSE) {<br />
&nbsp; &nbsp; &nbsp; &nbsp;while (!feof($fp)) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$text.= @fgets($fp, 128);<br />
&nbsp; &nbsp; &nbsp; &nbsp;}<br />
&nbsp; &nbsp; &nbsp; &nbsp;echo $text;<br />
&nbsp; &nbsp;}<br />
&nbsp; &nbsp;@fclose($fp);<br />
}<br />
}<br />
?&gt;</div></div>
<p>Выводим содержимое файла на главной странице с учетом кодировки:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
$url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'];<br />
function is_main($url) {<br />
&nbsp; &nbsp;return preg_match(&quot;/^(http:\/\/)?([\w-]+\.)+[a-z]{2,4}(\/|\/[\w-]*\.[a-z]{1,10})?$/i&quot;, $url);<br />
}<br />
if (is_main($url))<br />
{<br />
$host = &quot;www.ploshadka.net&quot;;<br />
$link = &quot;/folder/ploshadka.txt&quot;;<br />
$fp = @fsockopen($host, 80, $errno, $errstr, 30);<br />
if ($fp) {<br />
&nbsp; &nbsp;$out = &quot;GET &quot;.$link.&quot; HTTP/1.0\r\n&quot;;<br />
&nbsp; &nbsp;$out .= &quot;Host: &quot;.$host.&quot;\r\n&quot;;<br />
&nbsp; &nbsp;$out .= &quot;Connection: Close\r\n\r\n&quot;;<br />
&nbsp; &nbsp;@fwrite($fp, $out);<br />
&nbsp; &nbsp;$text = &quot;&quot;;<br />
&nbsp; &nbsp;do {<br />
&nbsp; &nbsp; &nbsp; &nbsp;$text .= @fgets ( $fp, 4096 );<br />
&nbsp; &nbsp;} while ( strpos ( $text, &quot;\r\n\r\n&quot; ) === false );<br />
&nbsp; &nbsp;$ferror = strpos($text, &quot;404 Not Found&quot;);<br />
&nbsp; &nbsp;$text = &quot;&quot;;<br />
&nbsp; &nbsp;if ($ferror === FALSE) {<br />
&nbsp; &nbsp; &nbsp; &nbsp;while (!feof($fp)) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$text.= @fgets($fp, 128);<br />
&nbsp; &nbsp; &nbsp; &nbsp;}<br />
&nbsp; &nbsp; &nbsp; &nbsp;$tt = iconv(&quot;Windows-1251&quot;, &quot;UTF-8&quot;, $text);<br />
if ($tt) {<br />
echo $tt;<br />
} else {<br />
echo $text;<br />
} <br />
&nbsp; &nbsp;}<br />
&nbsp; &nbsp;@fclose($fp);<br />
}<br />
}<br />
?&gt;</div></div>
<p>Выводим содержимое файлов на всех страницах сайта:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
$host = &quot;www.ploshadka.net&quot;;<br />
$link = &quot;/folder/ploshadka.txt&quot;;<br />
&nbsp;<br />
$fp = @fsockopen($host, 80, $errno, $errstr, 30);<br />
&nbsp;<br />
if ($fp) {<br />
&nbsp; &nbsp;$out = &quot;GET &quot;.$link.&quot; HTTP/1.0\r\n&quot;;<br />
&nbsp; &nbsp;$out .= &quot;Host: &quot;.$host.&quot;\r\n&quot;;<br />
&nbsp; &nbsp;$out .= &quot;Connection: Close\r\n\r\n&quot;;<br />
&nbsp; &nbsp;@fwrite($fp, $out);<br />
&nbsp;<br />
&nbsp; &nbsp;$text = &quot;&quot;;<br />
&nbsp; &nbsp;do {<br />
&nbsp; &nbsp; &nbsp; &nbsp;$text .= @fgets ( $fp, 4096 );<br />
&nbsp; &nbsp;} while ( strpos ( $text, &quot;\r\n\r\n&quot; ) === false );<br />
&nbsp;<br />
&nbsp; &nbsp;$ferror = strpos($text, &quot;404 Not Found&quot;);<br />
&nbsp; &nbsp;$text = &quot;&quot;;<br />
&nbsp; &nbsp;if ($ferror === FALSE) {<br />
&nbsp; &nbsp; &nbsp; &nbsp;while (!feof($fp)) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$text.= @fgets($fp, 128);<br />
&nbsp; &nbsp; &nbsp; &nbsp;}<br />
&nbsp; &nbsp; &nbsp; &nbsp;echo $text;<br />
&nbsp; &nbsp;}<br />
&nbsp; &nbsp;@fclose($fp);<br />
}<br />
?&gt;</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/php-remote-output-file-contents/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Недостатки simple_html_dom  или парсинг сложных страниц</title>
		<link>https://ploshadka.net/simple_html_dom-two-identical-blocks/</link>
					<comments>https://ploshadka.net/simple_html_dom-two-identical-blocks/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Fri, 10 Nov 2017 20:14:42 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP примеры и разбор]]></category>
		<category><![CDATA[preg_match()]]></category>
		<category><![CDATA[simple_html_dom]]></category>
		<category><![CDATA[Парсинг страниц]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=3404</guid>

					<description><![CDATA[Я уже писал о библиотеке simple_html_dom, с помощью которой можно парсить страницы сайтов. В этой заметке поделюсь некоторыми наработками, когда содержимое имеет одинаковые контейнеры. Что делать когда сложно зацепиться за DOM элементы? По неизвестной мне причине в библиотеке simple_html_dom не...]]></description>
										<content:encoded><![CDATA[<p>Я уже писал о библиотеке <a href="https://ploshadka.net/simple_html_dom/">simple_html_dom</a>, с помощью которой можно парсить страницы сайтов. В этой заметке поделюсь некоторыми наработками, когда содержимое имеет одинаковые контейнеры. <span id="more-3404"></span></p>
<p>Что делать когда сложно зацепиться за DOM элементы? </p>
<p>По неизвестной мне причине в библиотеке simple_html_dom не работает несколько классов в html элементе. Например, не получится найти и сделать выборку по строке:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;div class=&quot;one two three&quot; kakay-to eshe fignya {{&quot;ochen&quot;}} slojnay&gt;нужное нам содержимое&lt;/div&gt;</div></div>
<p>Очевидным будет использовать конструкции вроде:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">foreach ( $html-&gt;find('div.one.two.three') as $matches ) {}</div></div>
<p>или</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">foreach ( $html-&gt;find('div[class=one][class=two][class=three]') as $matches ) {}</div></div>
<p>но на деле это не работает или почти никогда не работает.</p>
<h2>Описание задачи</h2>
<div class="highlight">Задача следующая:</p>
<p><em>Нужно найти два отдельных блока содержимого. Оба блока имеют одинаковые свойства и потому не цепляются по отдельности. </em></div>
<h3>Сначала preg_match потом simple_html_dom</h3>
<p>Для этих целей можно было бы использовать сначала конструкции <a href="https://ploshadka.net/preg_match/">preg_match</a>, чтобы найти определённое содержимое страницы:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match(&quot;/&lt;div class=&quot;one-class&quot;&gt;Заголовок_первый(.*?)&lt;div class=&quot;класс-один класс-два.*?&gt;(.*?)Заголовок_второй/&quot;, $html, $matches);</div></div>
<p>Код выше схватит всё что начинается с &#171;Первого заголовка&#187; и до &#171;второго заголовка&#187;. </p>
<p>Иногда приходится так изощрять код, потому что иначе не захватить точный кусок кода. В базовых примерах php часто даются простые и типовые ситуации, которые не работают в сложных случаях.</p>
<p>А вот ещё один код:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match(&quot;/&lt;div class=&quot;класс-один класс-два.*?&gt;(.*?)Заголовок_второй/s&quot;, $html, $matches);</div></div>
<p>С помощью него мы уже захватим всё что после второго заголовка. </p>
<p>А потом уже из найденного использовать выборку</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">foreach ( $matches-&gt;find('') as $matches ) {}</div></div>
<p>Но здесь возникает другая проблема. Содержимое в переменной matches отказывается пониматься и выводит разного рода ошибки. Даже, если содержимое конвертировать в массивы или строки, всё равно чего-то не хватает. А что именно, совсем не ясно.</p>
<p>Хотя в обратную сторону работает. Если сначала сделать выборку через simple_html_dom, то потом можно вполне забирать информацию через preg_match.</p>
<p>В ином случае остаётся придерживаться одного стиля, либо использовать только preg_match либо simple_html_dom. В данной статье будем использовать только второе.</p>
<p><strong>Дополнено позже</strong>. Проблему описанную выше можно решить с помощью предварительного сохранения результат выборки $matches в отдельных файл, а затем снова использовать функцию <strong>file_get_html()</strong>. Например, так:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Важно сохранить данные в файл, иначе повторно библиотека file_get_html работать не будет.<br />
if ( !empty($matches[2]) ) {<br />
&nbsp; &nbsp; file_put_contents($file_temp, $matches[2]);<br />
&nbsp;}<br />
<br />
if ( file_exists($file_temp) ) {<br />
&nbsp; &nbsp; $html = file_get_html($file_temp); // Используем библиотеку<br />
}</div></div>
<h3>Только simple_html_dom</h3>
<p>Если перед парсингом нужно удалить какие-то данные, <a href="https://ploshadka.net/simple_html_dom-how-remov/">воспользуйтесь этой статьёй</a>.</p>
<p>В коде уже привел все пояснения. Первый блок находим так.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Задаём счет<br />
$i=0;<br />
// Находим общий контейнер<br />
foreach ( $html-&gt;find('div.class-best') as $matches ) {<br />
&nbsp; &nbsp; $i++;<br />
&nbsp; &nbsp; if($i==2) break; // Останавливаем поиск после первого найденного контейнера<br />
<br />
&nbsp; &nbsp; // Создаём массив из данных<br />
&nbsp; &nbsp; $j=0;<br />
&nbsp; &nbsp; // Теперь в общем контейнере будем забирать нужную нам информацию<br />
&nbsp; &nbsp; foreach ( $matches-&gt;find('div[itemtype=&quot;&quot;]') as $matches2 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; $j++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; if($j==6) break; // На 6 одинаковом элементе останавливаем поиск<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Ищем 3 отдельных элемента. <br />
&nbsp; &nbsp; &nbsp; &nbsp; // 1 - Простой текст в ссылке, 2 - простой текст внутри тега span, <br />
&nbsp; &nbsp; &nbsp; &nbsp; // 3 - и ссылку на изображение<br />
&nbsp; &nbsp; &nbsp; &nbsp; @$one = $matches2-&gt;find('a.one', 0)-&gt;plaintext;<br />
&nbsp; &nbsp; &nbsp; &nbsp; @$two = $matches2-&gt;find('span.two', 0)-&gt;plaintext;<br />
&nbsp; &nbsp; &nbsp; &nbsp; @$three = $matches2-&gt;find('img', 0)-&gt;src;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; // На всякий случай избавимся от лишних пробелов с обоих сторон найденного<br />
&nbsp; &nbsp; &nbsp; &nbsp; $one = trim($one);<br />
&nbsp; &nbsp; &nbsp; &nbsp; $two = trim($two);<br />
&nbsp; &nbsp; &nbsp; &nbsp; $three = trim($three);<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Дальше можно поменять содержимое одного найденного объекта<br />
&nbsp; &nbsp; &nbsp; &nbsp; $three = preg_replace('/\/\//','https://',$three); // меняем в начале ссылку '//' на 'https://'<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; $our_array[] = $one .', ' .$two .', ' .$three;<br />
&nbsp; &nbsp; }<br />
}</div></div>
<p>В результате этих манипуляций мы получим массив $our_array, в котором будет содержаться такая информация:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">[0]=&gt; 'Простой текст в ссылке', 'Текст внутри span', 'ссылка на фото' [1]=&gt; ...</div></div>
<p>И так 5 строк в массиве. Дальше с этим массив можно делать всё что угодно.</p>
<p>Но задача ещё не закончена. Помните, выше я говорил о втором блоке, который тоже нужно найти? Проблема в том, что он имеет одинаковые свойства с первым блоком, который нам не надо никак захватывать. </p>
<p>Предположим что первый блок меняется и содержит всегда разное количество информации. И не получится это обойти используя наш первый массив, начиная например с 6-ого значения: our_array[5]. Ведь в другой раз, на другой странице, нужные нам данные могут начинаться с третьей позиции или любой другой.</p>
<p>Мы знаем, что второй блок, к счастью начинается сразу за первым. Или любым другим, но идёт всегда в одинаковом порядке. В приведенном примере всегда после первого блока. Тогда добавляем следующую конструкцию:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$i=0;<br />
// Находим общий контейнер<br />
foreach ( $html-&gt;find('div.class-best') as $matches ) {<br />
&nbsp; &nbsp; $i++;<br />
&nbsp; &nbsp; if($i==1) continue; // Пропускаем первый найденный объект <br />
&nbsp; &nbsp; if($i==3) break; // Останавливаем поиск после первого найденного объекта<br />
<br />
&nbsp; &nbsp; Здесь всё тоже самое, что и в первом блоке.<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; $our_array2[] = $one .', ' .$two .', ' .$three;<br />
&nbsp; &nbsp; }<br />
}</div></div>
<p>Как видно, содержимое второго php блока повторяет первый, за исключением того, что мы находим первый блок и пропускаем его с помощью конструкции <strong>if($i==1) continue</strong>. И обязательно останавливаем наш поиск на втором блоке. Иначе схватится лишнее. Одинаковых контейнеров может быть очень много.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/simple_html_dom-two-identical-blocks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как заменить данные в записях WordPress используя регулярные выражений в PHP</title>
		<link>https://ploshadka.net/post_content-preg_replace-preg_match/</link>
					<comments>https://ploshadka.net/post_content-preg_replace-preg_match/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 30 Oct 2017 11:03:33 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[get_the_content]]></category>
		<category><![CDATA[preg_match()]]></category>
		<category><![CDATA[preg_replace()]]></category>
		<category><![CDATA[single.php]]></category>
		<category><![CDATA[the_content]]></category>
		<category><![CDATA[Парсинг страниц]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=3369</guid>

					<description><![CDATA[Уже имеется заметка, как массово поменять текст в WordPress. В этой же статье разберу замену текста при выводе записей (the_content), а также использование регулярных выражений. Замена текста с помощью PHP в записях WordPress Разберем регулярные выражения на примере поиска и...]]></description>
										<content:encoded><![CDATA[<p>Уже имеется заметка, как <a href="https://ploshadka.net/wordpress-text-replace/">массово поменять текст в WordPress</a>. В этой же статье разберу замену текста при выводе записей (<strong>the_content</strong>), а также использование регулярных выражений. <span id="more-3369"></span></p>
<h2>Замена текста с помощью PHP в записях WordPress</h2>
<p>Разберем <a href="https://ploshadka.net/regular-expressions/">регулярные выражения</a> на примере поиска и замены как самого текста, так и элементов внутри определенных дивов при выводе информации в WordPress .</p>
<h3>Для удобства замены преобразуем вывод поста в переменную</h3>
<p>Контент записи в WordPress выводится функцией:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">the_content()</div></div>
<p>Положим <strong>содержимое функции вывода</strong> поста (the_content) в переменную <strong>$content</strong>:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$content = apply_filters( 'the_content', get_the_content() );</div></div>
<p>Теперь мы можем выводить содержимое поста таким образом:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">echo $content;</div></div>
<h3>Удаление данных с помощью preg_replace</h3>
<p>Теперь для удаления данных со страницы записи WordPress используем такую конструкцию, которая изменит содержимое переменной $content. А именно найдет в данных нужный нам текст, структуру html и любое другое содержимое, а затем удалит её со страницы.</p>
<p>Удаление содержимого в конкретном див теге (с конкретным классом):</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$content = preg_replace('/(&lt;div.*?class=&quot;price&quot;[^&gt;]*&gt;)(.*?)(&lt;\/div&gt;)/i', '$1$3', $content);</div></div>
<p>Удаление всего конкретного див тега:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$content = preg_replace('/(&lt;div.*?class=&quot;price&quot;[^&gt;]*&gt;)(.*?)(&lt;\/div&gt;)/i', '', $content);</div></div>
<p>Остальные примеры можно найти в статье про <a href="https://ploshadka.net/preg_replace/">preg_replace</a>.</p>
<h3>Вывод данных с помощью preg_match</h3>
<p>Вместо предыдущей функции <strong>preg_replace</strong>, где мы убираем текст, с помощью preg_match можно находить конкретные данные и сохранять их в переменную для последующего вывода.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match(&quot;/&lt;h2&gt;(.*?)&lt;\/h2&gt;/s&quot;, $post-&gt;post_content, $matches);</div></div>
<p>где:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$post-&gt;post_content&quot;</div></div>
<p>то, где мы ищем, в данном случае мы ищем информацию в записи WordPress страницы.</p>
<p>Когда мы нашли мы можем вывести эту запись в любом другом месте. </p>
<p>Вывод записи:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">print($matches [0]);</div></div>
<p>Или даже сохранить в произвольное поле, содержимое которого также можем вывести в любом другом месте.</p>
<p>Больше примеров смотрите в статье о <a href="https://ploshadka.net/preg_match/">preg_match</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/post_content-preg_replace-preg_match/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Поиск данных с помощью функции preg_match</title>
		<link>https://ploshadka.net/preg_match/</link>
					<comments>https://ploshadka.net/preg_match/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 30 Oct 2017 10:28:29 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Errors]]></category>
		<category><![CDATA[implode]]></category>
		<category><![CDATA[PHP примеры и разбор]]></category>
		<category><![CDATA[preg_match()]]></category>
		<category><![CDATA[Основательные труды]]></category>
		<category><![CDATA[Парсинг страниц]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=3360</guid>

					<description><![CDATA[preg_match &#8212; является функция поиска в PHP. Если функция preg_replace убирает текст, то с помощью preg_match можно находить конкретные данные и сохранять их в переменную для последующего вывода. Если нужна функция замены в PHP при поиске данных, то она называется...]]></description>
										<content:encoded><![CDATA[<p><strong>preg_match</strong> &#8212; является функция поиска в PHP. Если функция <strong>preg_replace</strong> убирает текст, то с помощью preg_match можно находить конкретные данные и сохранять их в переменную для последующего вывода.<span id="more-3360"></span></p>
<p>Если нужна функция замены в PHP при поиске данных, то она называется <a href="https://ploshadka.net/preg_replace/">preg_replace</a>.</p>
<div class="highlight">Функция работает следующим образом.</p>
<p>В первом параметре, с помощью <a href="https://ploshadka.net/regular-expressions/">регулярных выражений</a> задаются критерии поиска.</p>
<p>Во втором параметре, содержится информация, в которой необходимо найти данные.</p>
<p>Последний параметр, то куда мы будем сохранять найденные данные.</p></div>
<p>Найдём все что лежит внутри тега H2:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match(&quot;/&lt;h2&gt;(.*?)&lt;\/h2&gt;/s&quot;, $gde_ishem, $kuda_sohranyaem);</div></div>
<p>Альтернативный вариант:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match(&quot;|\&lt;h2.*\&gt;(.*\n*)\&lt;/h2\&gt;|isU&quot;, $content, $matches);</div></div>
<p>Найдем конкретный тег:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match('/(&lt;div.*class=&quot;price&quot;&gt;).*(&lt;\/div&gt;)/i', $content, $matches);</div></div>
<p>Находим строку со словом заголовок, которая находится в таблице HTML, между тегами TR:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match(&quot;/&lt;tr[^&gt;](.*?)заголовок(.*?)&lt;\/tr&gt;/s&quot;, $content, $matches);</div></div>
<h2>Пример 1</h2>
<p>Нужно найти ссылку или значение внутри неё. </p>
<p>Это выражение поможет найти данные в ссылке:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match(&quot;/(&lt;a.*?&gt;)(.*?)(&lt;\/a&gt;)/&quot;, $content, $matches);</div></div>
<p>При этом:<br />
matches [0] &#8212; выведет ссылку с элементом<br />
matches [2] &#8212; выведет только элемент внутри ссылки</p>
<p>Вывод содержимого preg_match:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">print($matches [0]);</div></div>
<p>или</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">echo $matches [1];</div></div>
<p>Параметр [0] &#8212; выводит всё найденное содержимое, а если его поменять на [2] &#8212; то часть строки, которая соответствует второй подмаске (круглые скобки).</p>
<h2>Пример 2</h2>
<p>Имеем такое выражение сложения и равенства:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$content = 100 + 200 = 300;</div></div>
<p>Найдем его отдельные значения:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match(&quot;/(.*)=(.*)/&quot;, $content, $matches);</div></div>
<p>Выведем из него значение 300:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">echo matches[3];</div></div>
<p>Если нам нужна только средняя цифра из примера, мы можем найти выражение иначе:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_match(&quot;/(\+.*\;=.)/&quot;, $content, $matches);</div></div>
<p>Этим способом мы найдём:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&quot;+ 200 = &quot;</div></div>
<p>Если нужно оставить только цифру 200, это можно сделать с помощью функции <a href="https://ploshadka.net/preg_replace/">preg_replace</a>.</p>
<h2>Пример 3</h2>
<p>Найти адрес ссылки внутри изображения:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt; *img[^&gt;]*src *= *[&quot;\']?([^&quot;\']*)</div></div>
<h2>Ошибки в preg_match</h2>
<p>Ошибка такого рода:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">Warning: preg_match() expects parameter 2 to be string, array given in \index.php on line 49</div></div>
<p>Означает, что второй параметр (то в чем мы ищем) должен быть строкой. Это, конечно ни о чем не скажет, если мы не знаем, что подразумевается под строкой (string). Однако, предположим, мы всё же знаем, а поэтому переведём значение из массива в строку:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$string = implode(&quot;, &quot;, $array);</div></div>
<p>Теперь при поиске preg_match не будет ругаться и успешно выведет нужные данные.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/preg_match/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Регулярные выражений в PHP</title>
		<link>https://ploshadka.net/regular-expressions/</link>
					<comments>https://ploshadka.net/regular-expressions/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 21 Oct 2017 08:10:06 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[preg_match()]]></category>
		<category><![CDATA[preg_replace()]]></category>
		<category><![CDATA[Основательные труды]]></category>
		<category><![CDATA[Парсинг страниц]]></category>
		<category><![CDATA[Регулярные выражения]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=3156</guid>

					<description><![CDATA[Заметка о регулярных выражениях. Зачем они нужны, где используются и как их применять. Иными словами о поиске в PHP. Регулярные выражения &#8212; это набор указателей, которые используются в поиске, для нахождения нужных данных. Использование регулярных выражений в функциях PHP, замены...]]></description>
										<content:encoded><![CDATA[<p>Заметка о регулярных выражениях. Зачем они нужны, где используются и как их применять. Иными словами о поиске в PHP. <span id="more-3156"></span></p>
<div class="highlight"><strong>Регулярные выражения</strong> &#8212; это набор указателей, которые используются в поиске, для нахождения нужных данных.</div>
<p>Использование регулярных выражений в функциях PHP, замены <a href="https://ploshadka.net/preg_replace/">preg_replace</a>, поиска <a href="https://ploshadka.net/preg_match/">preg_match</a>. </p>
<p>Например, рассмотрим такую функция:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">preg_replace('/(&lt;div[^&gt;]*&gt;)(.*?)(&lt;\/div&gt;)/i', '$1$3', $string);</div></div>
<p>То что внутри этой функции, все эти на первый взгляд непонятные значения, называется <strong>регулярным выражением (PHP RegEx)</strong>. Они используются для поиска конкретных данных. </p>
<p>Шаблон (символы) поиска берет своё начало с языка <strong>Perl</strong>.</p>
<p>Регулярные выражения делятся на <strong>метасимволы</strong> и <strong>модификаторы</strong> метасимволов.</p>
<p>Метасимволы &#8212; определяют группу обычных символов. Модификаторы &#8212; помогают понять сколько и какое количество этих символов искать.</p>
<h3> Метасимволы регулярного выражения</h3>
<p>Значения некоторых метасимволов из примера выше (также они будут встречаться ниже):</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">^ - начало строки<br />
\ - считать следующий элемент обычным символом (не командой)<br />
. - один произвольный (любой случайный) символ<br />
() - группировка (подмаска)<br />
[ ] - класс символов<br />
$ - конец строки<br />
| - альтернатива (или)</div></div>
<h3>Модификаторы регулярного выражения</h3>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">* - повторять от 0 до бесконечности<br />
? - искать 1 раз или меньше</div></div>
<p>Ещё модификаторы, но не используются в текущих примерах:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">+ - повторять 1 или большее число раз<br />
{n} - точное количество раз (заменить n цифрой)<br />
{n,5} - по меньшей мере 5 раз<br />
{n,m} - не меньше n, но и не больше m</div></div>
<p>Любой из вышеперечисленных модификаторов сочетается с модификатором &#171;?&#187;. Он необходим для ограничения поиска, потому что <strong>по умолчанию</strong> все метасимволы повторяются по принципу <strong>&#171;жадности&#187; (без ограничения)</strong>. </p>
<p>Например:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">(&lt;.*&gt;) - найдет всю строку со всеми тегами<br />
(&lt;.*?&gt;) - найдет только теги</div></div>
<h3>Дополнительные опции</h3>
<p>Кроме модификаторов и метасимволов есть опции (приведены не все):</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">/i - не имеет значения регистр символов (строчные и заглавные)<br />
/s - делает точки (.) переносом строки и возврата каретки (сдвиг влево).<br />
/U - превращается все количественные метасимволы в &quot;не жадные&quot;.</div></div>
<p>Опции могут сочетаться вместе:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">/isU</div></div>
<h3>Шаблоны</h3>
<p>Также существуют шаблоны, что-то вроде аналога метасимволов, один из них:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">\n - новая строка</div></div>
<p>На данной странице приведены не все параметры регулярных выражений. Это сделано специально, чтобы не запутать новичка и в то же время дать ему основные инструменты для поиска. В дальнейшем, при желании углубиться в детали, в Интернете можно найти более подробную инструкцию.</p>
<h2>Эксперименты</h2>
<p>Поэкспериментировать с регулярным выражением можно <a href="https://regex101.com" rel="noopener" target="_blank">на этом сайте</a>. Вверху вбиваете регулярное выражение, а снизу данные html в которых ищите. При правильном подборе регулярного выражения будет выделяться нужный вам участок кода.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/regular-expressions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
