Змінюй хід війни! Допомагай ЗСУ!

Помогите с REGEXP.

🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район

3em

Статус: Offline
Реєстрація: 16.02.2006
Повідом.: 31219
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #1
Помогите с REGEXP.

Не даются мне эти регулярные выражения что-то... в общем, если не сложно, подскажите как решить с помощью php такое дело.

1. Нужно вставить [ADD text="какой-то-текст"] эту конструкцию перед вторым вхождением </p> в тексте.

2. А потом отпарсить [ADD text="какой-то-текст"], что бы получилось то что в кавычках + некий текст из другой переменной.

Спасибо! :пиво:
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #2
незнаю как там у вас в похапе, но у нас в питоне с помощью регулярок это можно сделать например так:
Код:
>>> re.sub(r'^(.*</p>.*)(</p>.*)$', r'\g<1>[ADD text="какой-то-текст"]\g<2>', 'blablba <p>bla</p>bla<p>ololo</p>blabla')
'blablba <p>bla</p>bla<p>ololo[ADD text="какой-то-текст"]</p>blabla'

2. А потом отпарсить [ADD text="какой-то-текст"], что бы получилось то что в кавычках + некий текст из другой переменной.
?? ниче не понял. какой такой некий текст?
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #3
я не пыхыпыст. но вроде работает :)
Код:
<?php

$str='[ADD text="какой-то-текст"]';

$text="<p>1 tests tests tests tests tests tests tests</p>"
."<p>2 tests tests tests tests tests tests tests</p>"
."<p>3 tests tests tests tests tests tests tests</p>"
."<p>4 tests tests tests tests tests tests tests</p>"
."<p>5 tests tests tests tests tests tests tests</p>";

echo $text;

$text = preg_replace("/(.*?<\/p>.*?)(<\/p>.*)/i","$1".$str."$2",$text);

echo $text;

$x_var="3em";
preg_match('/text="(.*?)"/i', $text, $matches);

echo $matches[1]."+".$x_var;
				
?>
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #4
Безумная реализация :) Очень затратная вычислительно. У тебя ВЕСЬ текст захватывается двумя кусками, потом из этих кусков формируется еще одна строка размером с ВЕСЬ текст (и еще чуть-чуть - плюс вставка :) ), далее выполняется замена одной некислой строки на другую такую же некислую :)
Вот более эффективная реализация:
$text = preg_replace("/(<\/p>.*?)<\/p>/i", "$1".$str."</p>", $text, 1);
Захватывается только участок текста между первым и вторым вхождением, формируется строка и выполняется одна замена - обрати внимание на опциональный параметр ограничения кл-ва замен.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #5
Спасибо, ребята! завтра попробую!!
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #6
открою вам секрет: звездочка означает "ноль и больше" поэтому "?" не нужен

а по поводу лишних .* вначале и в конце это да, пасиба шо ткнули носом =)
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #7
eyeland сказав(ла):
открою вам секрет: звездочка означает "ноль и больше" поэтому "?" не нужен
вот именно от 0 до бесконечность
ты попробуй без "?" и поймешь зачем он там стоит :)
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #8
BFG-9000 сказав(ла):
Безумная реализация Очень затратная вычислительно. У тебя ВЕСЬ текст захватывается двумя кусками, потом из этих кусков формируется еще одна строка размером с ВЕСЬ текст (и еще чуть-чуть - плюс вставка ), далее выполняется замена одной некислой строки на другую такую же некислую
Вот более эффективная реализация:
$text = preg_replace("/(<\/p>.*?)<\/p>/i", "$1".$str."</p>", $text, 1);
Захватывается только участок текста между первым и вторым вхождением, формируется строка и выполняется одна замена - обрати внимание на опциональный параметр ограничения кл-ва замен.
спасибо за критику, я ж говорил я не проф прогер.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #9
точняк, он же жадный, таки действительно нужно ".*?"
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #10
все это делается ОЧЕНЬ просто при помощи jQuery - почитай, пригодиться
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #11
ггггггг
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #12
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #13
Назад
Зверху Знизу