powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Регулярка
25 сообщений из 34, страница 1 из 2
[PHP] Регулярка
    #38075450
Varo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть страничка

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title></title>
</head>

<body>
<p class="text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <p>Cras vestibulum tempor leo auctor placerat.</p> <p>Ut vel ipsum enim.</p> Nam ac neque enim. <b>Pellentesque enim diam, fermentum commodo aliquet in, venenatis non quam.</b> Praesent dictum accumsan nulla, ac rutrum ipsum pharetra eu. Donec aliquam, risus a volutpat rutrum, nunc purus mattis leo, eget feugiat odio elit non diam.
</p>

<p class="text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <p>Cras vestibulum tempor leo auctor placerat.</p> <p>Ut vel ipsum enim.</p> Nam ac neque enim. <b>Pellentesque enim diam, fermentum commodo aliquet in, venenatis non quam.</b> Praesent dictum accumsan nulla, ac rutrum ipsum pharetra eu. Donec aliquam, risus a volutpat rutrum, nunc purus mattis leo, eget feugiat odio elit non diam.
</p>
</body>

</html>



нужно вырезать все теги между
Код: html
1.
<p class="text"></p>



Т.е. должно получится так

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title></title>
</head>

<body>
<p class="text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vestibulum tempor leo auctor placerat. Ut vel ipsum enim. Nam ac neque enim. Pellentesque enim diam, fermentum commodo aliquet in, venenatis non quam. Praesent dictum accumsan nulla, ac rutrum ipsum pharetra eu. Donec aliquam, risus a volutpat rutrum, nunc purus mattis leo, eget feugiat odio elit non diam.
</p>

<p class="text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vestibulum tempor leo auctor placerat. Ut vel ipsum enim. Nam ac neque enim. Pellentesque enim diam, fermentum commodo aliquet in, venenatis non quam. Praesent dictum accumsan nulla, ac rutrum ipsum pharetra eu. Donec aliquam, risus a volutpat rutrum, nunc purus mattis leo, eget feugiat odio elit non diam.
</p>
</body>

</html>



Помогите пожалуйста с регулярным выражением
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38075712
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Varo,

Для этой цели лучше всего подойдет strip_tags.
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38075720
Varo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
phpz,

Функция удаления тегов данном случае - не подходит. По крайней мере в одиночном использовании.
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38075747
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
preg_replace_callback в помощь
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38075786
Varo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,

Это как раз то что нужно, но вот только у меня не получается составить правильное регулярное выражение, все ломается на первом </p>

По этому и прошу помощи
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38075793
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя регуляркой тут сложновато, возможно, будет, лучше юзать парсеры HTML
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38075848
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самому теперь интересно, по крайней мере у меня не получилось это сделать с помощью DOMDocument, т.к. он не правильно понимает вложенные теги P, потому что внутри тега P не может содержаться блочных тегов, коим он сами и является. Где вы взяли такой не валидный HTML ?
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38076013
Сергей111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если окаймить <p class="text"> <div>-ами, то получается. А так, действительно надо исправлять HTML-код.

<script type="text/javascript">
$(document).ready(function()
{
$('.text').each(function() {
$(this).parent().html('<p class="text">'+$(this).parent().text()+'</p>')
});alert($('.text').parent().parent().html());

});
</script>

<body>
<div>
<p class="text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <p>Cras vestibulum tempor leo auctor placerat.</p> <p>Ut vel ipsum enim.</p> Nam ac neque enim. <b>Pellentesque enim diam, fermentum commodo aliquet in, venenatis non quam.</b> Praesent dictum accumsan nulla, ac rutrum ipsum pharetra eu. Donec aliquam, risus a volutpat rutrum, nunc purus mattis leo, eget feugiat odio elit non diam.
</p>
</div>

<div>
<p class="text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <p>Cras vestibulum tempor leo auctor placerat.</p> <p>Ut vel ipsum enim.</p> Nam ac neque enim. <b>Pellentesque enim diam, fermentum commodo aliquet in, venenatis non quam.</b> Praesent dictum accumsan nulla, ac rutrum ipsum pharetra eu. Donec aliquam, risus a volutpat rutrum, nunc purus mattis leo, eget feugiat odio elit non diam.
</p>
</div>
</body>
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38076019
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaroПомогите пожалуйста с регулярным выражением
У вас произвольная вложенность. Почитайтедля чего регулярки существуют и для чего их не стоит за уши притягивать.
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38076261
регуляка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтоб не создавать еще одну тему помогите
Код: php
1.
2.
3.
4.
5.
6.
7.
<?php
$subject ="Text texttext abcd  -  1011620007288, blabla 21.10.2011";
echo $subject."<hr>";
  $pattern = '/(?P<idno>[0-9]{5,13})?(?P<day>[0-9]{2})/i'; 
  preg_match($pattern, $subject, $matches); 
  print_r($matches); 
?>

Хочу вырезать 1011620007288 и дату 21.10.2011. Но не могу создать регулярку :(
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38077115
Varo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HettСамому теперь интересно, по крайней мере у меня не получилось это сделать с помощью DOMDocument, т.к. он не правильно понимает вложенные теги P, потому что внутри тега P не может содержаться блочных тегов, коим он сами и является. Где вы взяли такой не валидный HTML ?А так, действительно надо исправлять HTML-код.
Не имею возможности управлять кодом. Hett, вот именно по этому, я уже 3й день ломаю голову над этого простой с виду головоломкой -)

Почитайтедля чего регулярки существуют и для чего их не стоит за уши притягивать.
И вам хорошего дня.
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38077128
Varo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
регулякачтоб не создавать еще одну тему помогите
Код: php
1.
2.
3.
4.
5.
6.
7.
<?php
$subject ="Text texttext abcd  -  1011620007288, blabla 21.10.2011";
echo $subject."<hr>";
  $pattern = '/(?P<idno>[0-9]{5,13})?(?P<day>[0-9]{2})/i'; 
  preg_match($pattern, $subject, $matches); 
  print_r($matches); 
?>

Хочу вырезать 1011620007288 и дату 21.10.2011. Но не могу создать регулярку :(
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?php
  $subject = "Text texttext abcd  -  101162000, blabla 01.10.2011 blablabla 22.10.2012";
  echo $subject."<hr>";

  $pattern = "/[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}/";
  preg_match_all($pattern, $subject, $matches);
  print_r($matches);

  $pattern = "/[0-9]{5,13}/";
  preg_match_all($pattern, $subject, $matches);
  print_r($matches);

?>
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38077501
Сергей111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторHett, вот именно по этому
Может наивно, но что это означает?
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38077751
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я хз, просто придумал
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38078368
stopkran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Varo,

конкретно для первого примера ([13617842]) можно использовать такую схему:

1) разбить текст - $arr = explode('<p class="text">', $str);

2) почистить массив - foreach ($arr as $key => &$value) $value = strip_tags($value);

3) добавить элементам массива любые окаймляющие тэги (хоть те же <p class="text">)...
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38078452
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ниче не понял, но почему-то мне кажется вы так вообще все тэги поудаляете.
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38078556
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если HTML гарантированно корректен и если иных особенностей нет, т.е. задача строго :

разбить на p-эшки, у которых класс text и вернуть содержимое этих p-эшек

То начало в принципе подходит:
Код: php
1.
$arr = explode('<p class="text">', $str);



Ну а дальше не надо ничего стрипать, просто убрать лишнее, т.е. закрывающие </p> в конце строк. И всё.
Но решение грязное и чувствительное, т.е. черновое.
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38078557
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно в каком-то из <p class="text"> добавить лишних пробелов и explode нас разочарует :)

Но если разбивать регуляркой, то уже будет живучее.
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38078836
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не подходит для XHTML, и если уж HTML и валидный, то лучше все сделать с помощью DOMDocument
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38079303
Kreol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтоб не плодить тем, подскажите как регулярным выбрать
из шаблона
key1 ""

"string1 "

"string2 "

key2 ""

Все что между key1"" ---- key2"" то есть выбрать строчки. Спасибо
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38079307
Kreol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и как выбрать отдельно строки 1 и 2 из такого шаблона, ну тоесть результат 1 = строка 1 + строка 2; результат 2 - строка 1; результат 3 = строка 2.
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38079509
stopkran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,
естественно, поудаляю. И получу голые данные. Которые потом можно обрамлять в любые нужные тэги.
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38079591
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38079979
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stopkranHett,
естественно, поудаляю. И получу голые данные. Которые потом можно обрамлять в любые нужные тэги.
все теги можно и без цикла удалить
...
Рейтинг: 0 / 0
[PHP] Регулярка
    #38080439
stopkran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,
без цикла это будут не массив данных а строка .
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Регулярка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]