Войти
Меню :
php (390)
search (6)



Blog (1953)
other (410)
php (390)
js (301)
html (153)
php book (148)
css (147)
пк (124)
html tags (63)
js tag (56)
windows (48)
js method (44)
jquery (43)
php array (39)
Показать еще :
ruweb.net (37)
text (37)
js date (33)
form html (30)
online (29)
link (26)
fonts (24)
js events (22)
dosite (22)
php file (21)
atom (20)
foto (20)
input (19)
database (19)
svg (18)
lingvo (18)
forum (18)
hosting (17)
php date (17)
mysql (17)
php img (16)
фото (16)
info (15)
android (15)
img (15)
php time (15)
color (15)
js url (14)
js time (14)
jsphp (14)
xiaomi (14)
notepad (14)
board (14)
yandex (13)
select (13)
знак (13)
htaccess (13)
table (13)
osclass (13)
$ server (12)
php path (12)
download (12)
vs code (11)
icon (11)
dw block (11)
html book (11)
keyboard (11)
css img (10)
paint (10)
mouse (10)
ось (10)
form (10)
js delete (10)
ftp (9)
hover (8)
iframe (8)
php url (7)
cookie (7)
comment (7)
list (6)
hey tag (6)
php get (6)
search (6)
js vars (6)
нок (6)
click (6)
canvas (6)
console (5)
js id (5)
value (5)
mb (5)
tag a (5)
js math (5)
heading (5)
year (5)
reg.ru (5)
web (5)
ok (5)
xml (5)
js file (5)
week (4)
day (4)
ssl (4)
adminka (4)
js img (4)
youtube (4)
php var (4)
ucoz (4)
scandir (4)
bbcode (4)
pages (4)
month (4)
vk (4)
2022 (4)
submit (4)
task (4)
js form (4)
word (4)
base64 (4)
symbols (4)
js hash (4)
news (4)
js book (4)
numbers (4)
games (4)
folder (4)
https (3)
file (3)
куб (3)
units (3)
captcha (3)
line (3)
php day (3)
js post (3)
рся (3)
aimp (3)
404 (3)
padding (3)
video (3)
domen (3)
akaso (2)
qr code (2)
tag hr (2)
kfc (2)
counter (2)
seo (2)
prompt (2)
src (2)
height (2)
sitemap (2)
details (2)
typeof (2)
blob (2)
google (2)
arrows (2)
atom 11 (1)
atom 10 (1)
atom 7 (1)
atom 9 (1)
atom 8 (1)
php 5 (1)
atom 6 (1)
php 17 (1)
atom 15 (1)
atom 14 (1)
atom 13 (1)
atom 16 (1)
atom 17 (1)
atom 12 (1)
php 27 (1)
php 30 (1)
php 26 (1)
php 25 (1)
php 23 (1)
php 24 (1)
php 28 (1)
php 38 (1)
php 41 (1)
php 4 (1)
php 22 (1)
cursor (1)
php 19 (1)
php 20 (1)
php 8 (1)
php 9 (1)
php 10 (1)
php 32 (1)
js no4 (1)
php 7 (1)
#html (1)
chart (1)
atom 3 (1)
atom 4 (1)
atom 2 (1)
atom 1 (1)
header (1)
php 40 (1)
php 3 (1)
php 33 (1)
replace (1)
php 31 (1)
php 34 (1)
php 18 (1)
atom 5 (1)
date (1)
aimp 2 (1)
aimp 1 (1)
aimp 3 (1)
php 44 (1)
php 45 (1)
php 13 (1)
php (1)
php 2 (1)
js 10 (1)
js 9 (1)
jino (1)
php 37 (1)
js 8 (1)
js 4 (1)
js 5 (1)
js 6 (1)
js 1 (1)
js 7 (1)
php 1 (1)
php 43 (1)
ftp 5 (1)
php 15 (1)
php 36 (1)
webp (1)
php 42 (1)
ftp 4 (1)
ftp 3 (1)
ftp 2 (1)
php 6 (1)
php 35 (1)
php 11 (1)
speed (1)
atom 20 (1)
php 16 (1)
ftp 1 (1)
scroll (1)
opera (1)
php 14 (1)
atom 18 (1)
archive (1)
atom 19 (1)
php 29 (1)
php 39 (1)
rutube (1)
php 12 (1)
втб (1)
php 21 (1)
нод (1)
font (1)
js 2 (1)
name (1)
smile (1)
js 3 (1)

Как найти строку, которую невозможно найти?

"Сложный поиск строки" - изложение решения задачки...

Давно работающий скрипт - установка дополнительной строки(значение переменное), до или после найденной строки... - перестал работать

Пример решения задачки Сложный поиск строки

  1. Сложный поиск строки - вариант №1
  2. Сложный поиск строки - вариант №2

  1. Сложный поиск строки - описание...

    Далее в коде... постоянное, только атрибуты классов, остальные значения + html - это переменные! Которые меняются в зависимости от страницы!

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

    <ol class="count_levels">

      <li><a href="#paragraph_1">заголовок</a></li>

      <li><a href="#paragraph_2">заголовок</a></li>

    Сюда требуется добавить

    </ol>

    <ol class="count">

      <a name="paragraph_1"></a><li></li>

      <h2>Заголовок</h2>

      <a name="paragraph_2"></a><li></li>

      <h2>Заголовок</h2>

    Для представленого кода есть простое решение!

    Решение - нахождение и замена:

    Мы можем воспользоваться preg_match_all. Получаем все, что есть между

    class="count_levels">

    И следующим тегом

    </ol>

    В выражении будет так:

    preg_match_all('#class="count_levels">(.+?)</ol>#is', $example, $arr);

    Далее заменяем полученную ячейку

    $arr[1][0]

    На такую же, но только с добавленным содержанием:

    $arr[1][0]."\n Добавляемый элемент"

    И выводим с помощью echo

    Код в сборе:

    $example = '<ol class="count_levels">

      <li><a href="#paragraph_1">заголовок</a></li>

      <li><a href="#paragraph_2">заголовок</a></li>

    </ol>

    <ol class="count">

      <a name="paragraph_1"></a><li></li>

      <h2>Заголовок</h2>

      <a name="paragraph_2"></a><li></li>

      <h2>Заголовок</h2>';

    preg_match_all('#class="count_levels">(.+?)</ol>#is', $example, $arr);

    echo str_replace($arr[1][0] , $arr[1][0]."\n Добавляемый элемент" , $example);

    посмотреть результат...

  2. Сложный поиск строки - вариант №2

    Но далее... если html усложняется... в виде вложенного "<ol>" - то выше приведенный вариант перестает работать - посмотреть результат... и вообще все другие варианты, которые я знаю...

    Как решить?

    $example = '

    <ol class="count_levels">

        <li><a href="#paragraph_1">заголовок</a>

          <ol class="count_levels">

            <li><a href="#level_1">заголовок</a></li>

            <li><a href="#level_2">заголовок2</a></li>

          </ol>

        </li>

        <li><a href="#paragraph_2">заголовок</a></li>

    </ol>

    <ol class="count">

        <a name="paragraph_1"></a><li></li>

        <h2>Заголовок</h2>

        <a name="paragraph_2"></a><li></li>

        <h2>Заголовок</h2>';

    preg_match_all('#class="count_levels">(.+?)</ol>#is', $example, $arr);

    echo str_replace($arr[1][0] , $arr[1][0]."\n <b style='color:red;'>Добавляемый элемент</b>" , $example);

    Решение, которое работает всегда!

    Интересно, что самые не элегантные решения - работают всегда!

    Итак... что нам надо?

    Нам нужна функция... которая удаляет пустые ячейки массива + восстанавливает нумерацию массива.

    function dec(array $array, array $symbols = array('', NULL, false)) { return array_diff(array_map('trim', $array), $symbols); }

    Далее... нам нужно получить все до первого:

    <ol class="count">

    Разобьем в массив с помощью explode и получим первую часть массива используя current

    current(explode('<ol class="count">', $example))

    Мы получим :

    <ol class="count_levels">
      <li><a href="#paragraph_1">заголовок</a></li>
      <li><a href="#paragraph_2">заголовок</a></li>
    Сюда требуется добавить
    </ol>

    Теперь - я могу разбить полученный код по "</li>" и я знаю точно, что в предпоследней ячейке будет лежать моя строка(paragraph_2)...

    explode('</li>', "первая часть")

    И далее... заменяем предпоследнюю строку в начальном тексте:

    $example =str_replace($arr[count($arr)-2].'</li>' , $arr[count($arr)-2].'</li>'.'Добавляемый элемент' , $example);
    посмотреть результат...
    Соберем весь код:

    function dec(array $array, array $symbols = array('', NULL, false)) { return array_diff(array_map('trim', $array), $symbols); }

    $example = '

    <ol class="count_levels">

      <li><a href="#paragraph_1">заголовок</a>

        <ol class="count_levels">

          <li><a href="#level_1">заголовок</a></li>

          <li><a href="#level_2">заголовок2</a></li>

        </ol>

      </li>

      <li><a href="#paragraph_2">заголовок</a></li>

    </ol>

    <ol class="count">

      <a name="paragraph_1"></a><li></li>

      <h2>Заголовок</h2>

      <a name="paragraph_2"></a><li></li>

      <h2>Заголовок</h2>';

    $arr = dec( explode('</li>', current(explode('<ol class="count">', $example))));

    echo str_replace($arr[count($arr)-2].'</li>' , $arr[count($arr)-2].'</li>'."<b style='color:red;'>Добавляемый элемент</b>" , $example);

Не стесняемся говорить спасибо!
О комментах : 05.11.2024
Свои комменты в ожидании переделки!
Когда сделаю не знаю!
Времени нет...
Друзья! Пожалуйста держите себя в рамках приличия!
Иначе сообщение будет удалено, вас в бан - все просто!
Но если, сил нет как хочется высказать всё, что вы думаете об этом, пожалуйста - комменты от Vk - форма ниже:
Помочь проекту DwWeb.ru

Поделиться ссылкой! C друзьями или врагами!

Этим вы очень поможете проекту! Заранее огромное спасибо!

Теги:
Сложный поиск строки.
ruweb
См. интсрукция по ruweb. dwweb.ru есть здесь:
Все соцсети в одном месте!
defense_js Разное :Игра "пятнашки"
Угадай страну по флагу

Кальклятор
Математика онлайн

Списки шифрования
Часы

Числа словами
Названия чисел(max=10305)
Графики

Qr код онлайн

Как сделать сайт?
Md5 онлайн
Sitemap.html
Все статьи авторские, при копироавании активная ссылка обязательна DwWeb.ru! © 2015 - 2025 Контакты. Лучший хостинг : RUWEB + помощь по RUWEB Сайт работает круглосуточно 24/7.
Страница загружена за : 0.055811 секунд.