PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (30): [1] 2 3 4 5 6 7 8 9 ... » В конец

> Найдено сообщений: 446
GoDr Отправлено: 03 Февраля, 2018 - 13:27:56 • Тема: Поиск и замена подстроки в строке • Форум: Вопросы новичков

Ответов: 12
Просмотров: 478
На всякий случай выкладываю окончательный вариант (... чтоб самому на забыть Радость )
PHP:
скопировать код в буфер обмена
  1.  
  2.     function illumText($str1, $str2 = '', $class = '')
  3.     {
  4.         // Проверка на строку
  5.         if (is_string($str1)) {
  6.             // добавляем стиль CSS
  7.             $class = (empty($class)) ? '' : ' class=" ' . $class . '"';
  8.             // формируем шаблон
  9.             $str2 = '#' . preg_quote($str2, '#') . '#iu';
  10.             // делаем замену
  11.             $result = preg_replace($str2, '<span ' . $class . '>$0</span>', $str1);
  12.             return $result;
  13.         } else {
  14.             return $str1;
  15.         }
  16.     }
  17.  
GoDr Отправлено: 23 Января, 2018 - 15:19:57 • Тема: Поиск и замена подстроки в строке • Форум: Вопросы новичков

Ответов: 12
Просмотров: 478
Ну я так и сделал когда тестировал Подмигивание

Единственное, я не учёл защиту от входных данных, т.к. функция принимает и массивы... Ну в принципе в моей библиотеке для работы с массивами есть другая библиотека...
GoDr Отправлено: 23 Января, 2018 - 12:34:48 • Тема: Поиск и замена подстроки в строке • Форум: Вопросы новичков

Ответов: 12
Просмотров: 478
Строитель, принял к сведению, спасибо.
Я вот тоже подумал... второй параметр явно указывает на символ экранирования. А у меня понятно что идёт экранирование и понятно что разделитель это спецсимвол, но это не явное указание... Думаю твой пример будет намного правильнее... Читая код нужно сразу понимать что и как, а не додумывать Язычок
GoDr Отправлено: 23 Января, 2018 - 12:09:36 • Тема: Поиск и замена подстроки в строке • Форум: Вопросы новичков

Ответов: 12
Просмотров: 478
Строитель, не так высказал мысль ))) хотел сказать что и твой (часть его) и мой вариант кода с моими экранами не работает Улыбка

А второй параметр я видел, только у себя убрал и не внимательно протестировал ))) А потом решил просто изначально использовать спецсимвол чтобы "не дёргаться"
GoDr Отправлено: 23 Января, 2018 - 11:58:44 • Тема: Поиск и замена подстроки в строке • Форум: Вопросы новичков

Ответов: 12
Просмотров: 478
Я использую #
и твой вариант и мой выкидывает ошибку.. Нахмурился Твоя тильда тоже не спецсимвол )))
Видимо придётся переключиться на звёздочку.. она точно спецсимвол..

И при этом экранирование помогает, а вот \Q\E уже не работает....

в общем вот готовый метод.. может кому пригодиться.. или может кто подправит и оптимизирует
PHP:
скопировать код в буфер обмена
  1.  
  2.     /**
  3.      * Подсветка части текста
  4.      *
  5.      * @param string $str1  : исходная строка
  6.      * @param string $str2  : строка для поиска
  7.      * @param string $class : дополнительный класс CSS
  8.      *
  9.      * @return string : исходная подсвеченная строка
  10.      *
  11.      * @example :
  12.      *          $a = LibText::illumText('Корова видит других коров', 'коров', 'text-info');
  13.      *          // <span class="text-info">Коров</span>а видит других <span class="text-info">коров</span>
  14.      *
  15.      *          $a = LibText::illumText('Корова видит других коров', 'коров');
  16.      *          // <span>Коров</span>а видит других <span>коров</span>
  17.      *
  18.      * @since   1.0 : 23.01.2018 : Gold Dragon
  19.      */
  20.     public static function illumText($str1, $str2 = '', $class = '')
  21.     {
  22.         // добавляем стиль CSS
  23.         $class = (empty($class)) ? '' : ' class=" ' . $class . '"';
  24.         // формируем шаблон
  25.         $str2 = '*' . preg_quote($str2) . '*iu';
  26.         // делаем замену
  27.         $result = preg_replace($str2, '<span ' . $class . '>$0</span>', $str1);
  28.  
  29.         return $result;
  30.     }
  31.  
GoDr Отправлено: 23 Января, 2018 - 11:24:49 • Тема: Поиск и замена подстроки в строке • Форум: Вопросы новичков

Ответов: 12
Просмотров: 478
Вот спасибо... только сейчас понял что нужно использовать найденные переменные в замене... А я использовал $need... Радость

Тема закрыта. Спасибо
(Добавление)
Quick, не надо тут ничего придумывать ))) всё отлично работает... Хорошо

PS
поиск идёт через Ajax, так что при вводе одной фразы должны вываливаться все возможные варианты
(Добавление)
кстати, а не проще вместо preg_quote() использовать \Q...\E ?
GoDr Отправлено: 22 Января, 2018 - 15:21:11 • Тема: Поиск и замена подстроки в строке • Форум: Вопросы новичков

Ответов: 12
Просмотров: 478
Есть строка поиска, например, "коров". Есть искомая строка "Корова шла по полю и видела других коров".

Необходимо найти все регистронезависимые вхождения строки поиска и заменить её на строку, например с определённым классом.

Проблема поиска и замены не проблема, ну нужно сохранить регистр букв искомой строки.
То есть должно быть к примеру "<b>Коров</b>а шла по полю и видела других <b>коров</b>"

Что-то совсем запутались мозги.. заменяется или всё на "<b>коров</b>" или всё на "<b>Коров</b>"

текст в формате Юникод
GoDr Отправлено: 03 Сентября, 2015 - 11:09:49 • Тема: Перевод проекта на "Namespace" • Форум: Вопросы новичков

Ответов: 21
Просмотров: 2274
Всё, нашёл Улыбка
не так по началу перевёл )))
GoDr Отправлено: 03 Сентября, 2015 - 08:58:01 • Тема: Перевод проекта на "Namespace" • Форум: Вопросы новичков

Ответов: 21
Просмотров: 2274
DelphinPRO пишет:
Какое личное? Есть PSR, где четко указано как и что нужно именовать. Просто следуйте стандартам.
Кстати, я что-то не нашёл в стандартах как именовать сами файлы Не понял
GoDr Отправлено: 02 Сентября, 2015 - 15:31:23 • Тема: Перевод проекта на "Namespace" • Форум: Вопросы новичков

Ответов: 21
Просмотров: 2274
DelphinPRO пишет:
Чего смеешься? https://github[dot]com/joomla/joomla-cms Они давно уже взяли направление на стандарты...
Да это шутка Улыбка
Конечно я видел их код... хотя это что-то ужасное с чем-то огромным (ну или наоборот) Радость

Просто не так легко на "добровольной" основе из команды в пару человек взять идею (вернее уже даже не идею, а основу) и сделать что-то свою на стандартах.. Конечно не сравниться с командой из сотни кодеров... Но имеем, что имеем...


Хотя если честно, я изначально противился Namespase.. По мне, это и сейчас что-то не совсем "конкретное", а больше "правильное". Но пока ковырялся, нашёл один плюсик, IDE лучше работает да и "помогает" если использовать namespase... Но всё равно, эта штука больше относится к организации проекта чем к кодинку... В принципе это как семантика в HTML5
GoDr Отправлено: 02 Сентября, 2015 - 13:20:27 • Тема: Перевод проекта на "Namespace" • Форум: Вопросы новичков

Ответов: 21
Просмотров: 2274
DeepVarvar, ха-ха-ха Радость Радость Радость

PS
я не правлю код, а просто заменяю новыми библиотеками, просто не всё так быстро получается..
GoDr Отправлено: 02 Сентября, 2015 - 13:09:10 • Тема: Перевод проекта на "Namespace" • Форум: Вопросы новичков

Ответов: 21
Просмотров: 2274
DeepVarvar пишет:
Да, положи их куданить еще, чтоб в корне не валялись.

Это я пока "образно" накидал. Предполагается что вызов будет \ХХХ\Class, что уже является путём к файлу

DeepVarvar пишет:
Но зачем? Именуй файлы в правильном кейсе.
Это личное, не люблю в файлах иметь заглавные буквы Радость . И кто-знает как система воспримет совместимость разных регистров..

DeepVarvar пишет:
Хотя, все зависит от качества имеющегося кода, может там полная жопка. Да.
Наследие Джумлы Огорчение Там не только жопа но и г... остаётся ещё много от чего пока ещё не избавился.. Но осталось чуть-чуть Радость

DelphinPRO пишет:
Есть Composer, он прекрасно справляется с данной задачей.
Да вот сколько пытаюсь освоить, но пока не получается.. Или критическая задача не стояла, или второе.... Теорию понимаю, практику пока не очень могу освоить... А может просто нет в этом необходимости
GoDr Отправлено: 02 Сентября, 2015 - 10:17:54 • Тема: Перевод проекта на "Namespace" • Форум: Вопросы новичков

Ответов: 21
Просмотров: 2274
В общем делюсь первыми впечатлениями...

Пишу уже то, что нужно делать.. А то я неделю на грабли наступал.

Первым делом открываете свой IDE, у меня PhpStorm (всем советую, для проектов с лицензиями свободного программного обеспечения лицензия бесплатная). Настраиваем Инспектор только на что-то подобное:
- Undefined class: Declaration of referenced class is not found in built-in library and project files.
- Referenced function, method, field or class from callback is not found
- Referenced constant is not found in subject class.
- Declaration of referenced constant is not found in built-in library and project files.
- Referenced field is not found in subject class.
- Declaration of referenced function is not found in built-in library and project files.
- Label is not found in current scope.
- Referenced method is not found in subject class.
- Referenced namespace is not found.

Оставил только эти, остальные уже при тестировании...

Находим проблемы и исправляем их.

Далее кропотливо открываем каждый файл и вставляем NameSpase в начало. Была мысль написать скриптик, но побоялся что-то попортить, а вдруг Улыбка Но в принципе, скрипт не очень сложный должен получиться...

Дальше снова запускаем инспектор и начинаем править вызовы классов, методов и т.п.
Тут всё зависит от самих файлов, где проще добавить \ХХХ\Class, а де всё же через use...

Теперь что касается 10 дней... НЕ РЕАЛЬНО! Радость

У меня был "тестовый забег", просидел почти две недели - не далеко продвинулся... Затягивает время ещё то, что по ходу всплывают какие-то сторонние ошибки..

Ещё столкнулся с такой бедой как название самих классов и их размещение по файлам.. Т.е. нет системы. Например, библиотеки не имеют определяющего префикса, название файлов и классов очень разнятся, в одном файле несколько классов.
В связи с этим Автолоадер получается с костыльцом на начальном этапе, приходится учитывать некоторые особенности...
PHP:
скопировать код в буфер обмена
  1. class Autoloader
  2. {
  3. ................
  4.     protected static $_path = ['lib', 'core', 'api', 'fun'];
  5. ................
  6.     public static function autoload($file)
  7.     {
  8.         $file = str_replace('\\', '/', strtolower($file));
  9.  
  10.         if (preg_match('#\/(' . implode('|', self::$_path) . ')([\w]+)$#', $file, $m)) {
  11.             $path = _PATH_ROOT . '/'. str_replace($m[0], '/' . $m[2], $file) . '.php';
  12.         }else{
  13.             $path = _PATH_ROOT . '/' . $file . '.php';
  14.         }
  15.  
  16.         if (file_exists($path)) {
  17.             require_once($path);
  18.         }else{
  19.             throw new \Exception(_EXCEP_ISNOT_CLASS);
  20.         }
  21.     }
  22. ..............
  23. }
  24.  


PS
Как я сказал, это пробный этап переделки проекта.. Для полноценного передела нужно всё для начала разложить по полкам
GoDr Отправлено: 27 Августа, 2015 - 20:30:55 • Тема: Преобразовать текст в массив • Форум: Вопросы новичков

Ответов: 10
Просмотров: 1124
извиняюсь ... не заметил нюансы..
Проверю чуть позже... Но всё же я за регулярку.. нужно не "===" а всё таки "=="
GoDr Отправлено: 27 Августа, 2015 - 16:32:55 • Тема: Преобразовать текст в массив • Форум: Вопросы новичков

Ответов: 10
Просмотров: 1124
почти работает Хорошо
есть маленькие проблемки...

CODE (htmlphp):
скопировать код в буфер обмена
  1.     [Version 0.8.3] => Array
  2.         (
  3.             [19.08.2015] => Array
  4.                 (
  5.                     [0] =>
  6.                 )
  7.  
  8.             [02.06.2015] => Array
  9.                 (
  10.                     [0] => ~ Исправленою.....
  11.                     [1] =>
  12.                     [2] => Files
  13.                     [3] => \components\c\b.class.php
  14.                     [4] => \components\c\b.php
  15.                     [5] => \components\c\b.tools.php
  16.                     [6] => \components\c\pn.php
  17.                     [7] => \inc\version.php
  18.                     [8] => \listchanges.log
  19.                     [9] =>
  20.                 )
  21.  
  22.         )
  23.  

- первый массив (дата) берётся из предыдущей версии
- пустые массивы
- раздел Files вложен в массив даты


PS
оставлю на потом, надоело голову ломать ... Пройдёт пара дней и решение само придёт Улыбка

Страниц (30): [1] 2 3 4 5 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB