Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.233.62] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Сам нашел ошибку. Невнимательность. В первом случае был двойной вызов функции get_file_for_change, а во втором забывал переменную прописать. Кому интересно вот работающий код:
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <?php if (isset($_POST['find_css'])) {find_css('.');} ?> <!--- Кнопка для сканирования ---> <form method="post"> <input name="find_css" type="submit" value="Найти css в корневой папке"> </form> <!--- Проверка нажатия кнопки для счетчика ---> <?php if (isset($_POST['find_css'])) {calcul();} ?> <!--- Форма списка,куда должны передаваться результаты для дальнейшего выбора ---> <div class="form"> <form action="" method="post"> <div style="width:100%; height:150px; overflow:auto; border:solid 1px #C3E4FE;"> <?php if (isset($_POST['find_css'])) {add_strok();} ?> <!--- Вызов функции для добавления строк с проверкой нажатия кнопки ---> </div> <input type="submit" name="vibor_for_change" value="Выполнить"> </form> </div> <?php // Калькулятор найденых файлов function calcul() { global $matchV; global $pic_on; global $parth_on; $calc=count($parth_on); echo "Найдено $calc файла(ов)"; } // Функция добавления строк в список function add_strok() { global $pic_on; global $parth_on; for ($i=0; $i<count($parth_on); $i++) // по идее доолжна была проверять количество строк (элементов массива и быть счетчиком) { echo " <input type=\"radio\" name=\"strok\" value=\"$parth_on[$i]\" /> <div style=\"display:grid; grid-template-columns:80% 20%; \"> <div style=\" grid-column: 1 / 1;\">$parth_on[$i]</div> <div style=\"grid-column: 2 / 2;\">$pic_on[$i]</div></div><br> "; } } // РАБОЧАЯ Функция для нахождения всех css function find_css($dir) { global $pic_on; global $parth_on; foreach (glob($dir.DIRECTORY_SEPARATOR."*") as $annown) { if (is_dir($annown)) { if (find_css($annown)) continue; } else { $parth_annown[] =$annown; //echo $annown; echo '<br>'; if (preg_match_all("/^.*\.(css)$/i",$annown,$match, PREG_PATTERN_ORDER )) // выбираем все картинки { $matchV=array_values($match[0]); // собираем картинки в массив foreach ($matchV as $key=>$css) { $parth_on[]=$css; $pic_on[] ='<img src="./icon/icons8-css-26.png" width="100%" height="100%" >'; // делаем превью с иконкой // echo $pic; echo '<br>'; // оставил для проверки } } } } } ?> <?--- тут начало всех форм по вкладкам ---> <?php if (isset($_POST['strok'])) {$for_change=$_POST['strok']; get_file_for_change($_POST['strok']); } function get_file_for_change() { global $block; global $ubr; $count; global $mas1; global $match; global $match1; global $match2; global $matchV; global $matchV1; global $matchV2; global $value; global $count; global $ubr; global $for_change; $block=file_get_contents($for_change); { preg_match_all('/()(.*)(\b.*{)|(.)(.*)(,\s)/', $block, $match, PREG_PATTERN_ORDER); $matchV=array_values($match[0]); function trim_value(&$value) { $value = preg_replace('/(\.)(.*)(\.)/','.', $value); $value = preg_replace('/(\.)(.*)(\.)/','.', $value); $value=preg_replace('/,\s+/','', $value); $value = trim($value, ' {'); } array_walk($matchV, 'trim_value'); preg_match_all('/(,\s.)(.*)(,)/', $block, $match1, PREG_PATTERN_ORDER); $matchV1=array_values($match1[0]); function trim_value1(&$value) { $value = preg_replace('/(,\s)(.*)(\.)/','.', $value); $value = preg_replace('/(,)/','', $value); } array_walk($matchV1, 'trim_value1'); preg_match_all('/(.*,\s)(.*)(,\s+)/', $block, $match2, PREG_PATTERN_ORDER); $matchV2=array_values($match2[0]); function trim_value2(&$value) { $value = preg_replace('/(,)(.*)(,)/','', $value); } array_walk($matchV2, 'trim_value2'); $mas1=array_merge($matchV, $matchV1, $matchV2); function trim_value3(&$value) { $value = preg_replace('/(\.)(.*)(\.)/','.', $value); $value = preg_replace('/(\.)(.*)(\.)/','.', $value); $value=preg_replace('/,\s+/','', $value); } array_walk($mas1, 'trim_value3'); $ubr=array_unique($mas1); $count=count($ubr); $mas1id=preg_replace('/(\.)/', '', $ubr); function add_fields() { global $block; global $ubr; $count; global $mas1; global $match; global $match1; global $match2; global $matchV; global $matchV1; global $matchV2; global $value; global $count; global $ubr; for ($i=0; $i<$count; $i++) { echo " <input type=\"checkbox\" name=\"add_fields_class[]\" value=\"$ubr[$i]\" />$ubr[$i] <br> "; } } } } ?> <form action="sovm.php" method="post"> <div style="width:20%; height:100px; overflow:auto; border:solid 1px #C3E4FE;"> <?php //get_file_for_change(); if (isset($_POST['strok'])) {$for_change=$_POST['strok']; add_fields($_POST['strok']); } ?> </div> <input type="submit" name="formSubmit" value="Выполнить"> </form> </div> По сути основные вопросы изначальной темы решены. Хоть и не все нюансы тут показаны, но направление есть. Кто захочет - разовьет тему или спросит. Ну а я принцип понял, развил. Может и будут ещё вопросы по нюансам, но это уже нюансы. |
Сообщ.
#17
,
|
|
|
Вполне допускаю. 1) Но чем раньше попытаешься понять как написать "composer require xxx" и воспользоваться сторонним библиотечным кодом - тем лучше. Т.к. на сторонних решениях можно очень хорошо прокачать скилл. 2) Чем раньше откажешься от global, тем лучше. Ну и небольшой оффтоп, раз разобрался с регулярками, то думаю и с этим разберёшься. Писал как раз для таких случаев: https://github.com/phplrt/phplrt В твоём случае будет интересен вот этот функционал: https://github.com/phplrt/phplrt/blob/master/docs/lexer.md |