Ru-Board.club
← Вернуться в раздел «Web-программирование»

» PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

Автор: Spy686
Дата сообщения: 08.04.2012 16:12
А подскажите пожалуйста как с помощью PHP преобразовать html код в текст и сохранить в txt

Добавлено:

<?php
$search = array ("'<script[^>]*?>.*?</script>'si", // Вырезается javascript
"'<[\/\!]*?[^<>]*?>'si", // Вырезаются html-тэги
"'([\r\n])[\s]+'", // Вырезается пустое пространство
"'&(quot|#34);'i", // Замещаются html-элементы
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i"
);

$replace = array ("",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169)
);

$text = file_get_contents('http://adobe/union.txt');

$text = preg_replace('/message.*?">/i', '', $text);
$text = preg_replace('/<blockquote.*?<\/blockquote>/s', '', $text);
$text = preg_replace('/<cite>.*?<\/cite>/s', '', $text);
$text = preg_replace('/<strong>.*?<\/strong>/s', '', $text);
$text = preg_replace('/<strong>.*?<\/strong>/s', '', $text);
$text = preg_replace('/<div class="updated">.*?секунд/s', '', $text);
$text = preg_replace('/<p>,/s', '<p>', $text);
echo "$text";
$text = preg_replace($search, $replace, $text);

echo "$text";
$fp = fopen('twitts.txt', 'w');
fwrite($fp, $text);
fclose($fp);
?>
Автор: holden321
Дата сообщения: 08.04.2012 18:41

Код: require_once 'phpQuery-onefile.php';
$doc=phpQuery::newDocumentHTML(file_get_contents('file.html'));
file_put_contents('file.txt',pq('body',$doc)->text());
Автор: Spy686
Дата сообщения: 08.04.2012 18:46
Заменить символ * вначале строки

preg_replace('/^\*/', '+', '*hello')
Текст, в котором было нужно сделать замену - многострочный. Нужен был модификатор m.
Автор: Cheery
Дата сообщения: 08.04.2012 18:52
Spy686

Цитата:
PHP преобразовать html код в текст и сохранить в txt

www.php.net/strip_tags
Автор: Nimbussr
Дата сообщения: 21.04.2012 20:52
Извините если пишу не в ту тему.
Есть задача, которую хотелось бы по возможности решить с помощью RegExp`ов, но она не относится к Web-программированию.

В Excel есть столбцы в которых указывается время в виде:
Код: 0:1:26
0:19:3
0:1:17
0:1:14
0:0:59
0:0:59
0:2:6
Автор: Cheery
Дата сообщения: 21.04.2012 20:54
Nimbussr

Цитата:
которую хотелось бы по возможности решить с помощью RegExp`ов, но она не относится к Web-программировани

Excel FAQ (часть 5)
Excel VBA (часть 3)

ps: разбиваете по :, смотрите, если в численном значении число меньше или равно 9, то в строков цепляете 0 перед ним. "склеиваете" обратно.
Автор: Nimbussr
Дата сообщения: 21.04.2012 23:40
Cheery
Спасибо за помощь!
По поводу ссылок на темы по Excel - пока не пишу туда, т.к. нужно определиться можно ли реализовать мою затею через регэкспы.
Если нет - тогда там попытаюсь людей потеребить.

Цитата:
разбиваете по :, смотрите, если в численном значении число меньше или равно 9, то в строков цепляете 0
Для меня пока сложновато.
Не могли бы вы пример регэкспа привести?

Вот, скажем, выделил я в текстовом редакторе в столбик, открыл окно замены:


Далее, если я правильно вас понял, нужно задать условие:
ЕСЛИ <= 9 то нужно дописать после двоеточия ноль.

Но тут есть загвоздка в том, что мне нужно вставлять ноль только в том случае если количество цифр после двоеточий меньше двух. А если там уже двухзначное число то его сравнивать не нужно и заменять его тоже не нужно.
Автор: Cheery
Дата сообщения: 22.04.2012 00:07
Nimbussr
здесь мы не будем ничего этого обсуждать. хотя бы по причине того, что у каждого продукта свои особенности в регулярках.

так что спрашивайте в первой теме.
Автор: Nimbussr
Дата сообщения: 22.04.2012 19:13
Cheery
Цитата:
так что спрашивайте в первой теме
Вопрос решился средствами самого Excel, который сам добавляет недостающие нули.
Спасибо вам за наводку на темы по Excel.
Автор: DarkSmoke
Дата сообщения: 29.04.2012 00:14
Сижу уже целый день, читаю мануал. И не как не могу одбить дубля какую функцию мне юзать.

Задача: есть текст с картинками

Цитата:
<p>
Задает выравнивание содержимого ячеек строки по горизонтали. Выравнивание осуществляется для всех ячеек в пределах одной строки. <img alt="" src="http://code2/allimage/image/articles/gori.jpg" 150px; height: 188px;" /> Если требуется применить разное выравнивание для каждой ячейки, воспользуйтесь стилями или используйте параметр align для тега или!!!!</p>
<p>
<img alt="" img="" src="http://code2/allimage/image/articles/club.jpg" /><img alt="" src="http://code2/allimage/image/articles/gori.jpg" 150px; height: 188px;" /></p>


Из текста надо выдрать пути к картинкам. Сделал вот такое вот регулярное выражение:

Код: preg_match("/<img.+?src=\"http:\/\/".$_SERVER['SERVER_NAME']."\/(.+)\".+?\/>/", $art[0]->text, $b);
Автор: Cheery
Дата сообщения: 29.04.2012 00:24
DarkSmoke

Цитата:
$_SERVER['SERVER_NAME']

неплохо бы экранировать
и какое имя?

Цитата:
.+

без ограничений по жадности

Код: preg_match_all('/.+a/', '12345a6789a', $b);
var_dump($b);
Автор: DarkSmoke
Дата сообщения: 29.04.2012 00:34

Цитата:
неплохо бы экранировать

Зачем если я разорвал регулярку . " $_SERVER['SERVER_NAME'] " .

Не понял ответа Вашего =(

А получить надо только "allimage/image/articles/club.jpg

Идея, что бы при удалении статьи, удалять и картинки с сервера.
Автор: Cheery
Дата сообщения: 29.04.2012 00:36
DarkSmoke

Цитата:
Зачем если я разорвал регулярку . " $_SERVER['SERVER_NAME']  " .

чем же это "разорвали"??
сначала составляется строка, а потом она идет в регулярку.


Цитата:
Не понял ответа Вашего =(  

на пальцах - поставить ? после + в
Цитата:
\/(.+)\

или убрать ? и указать модификатор U
Автор: DarkSmoke
Дата сообщения: 29.04.2012 00:46
Сделал так

Код: preg_match("/<img.+src=\"http:\/\/".$_SERVER['SERVER_NAME']."\/(.+)\".+?\/>/U", $art[0]->text, $b);
Автор: Cheery
Дата сообщения: 29.04.2012 00:50
DarkSmoke
блин..


Цитата:
preg_match("/<img.+src=\"http:\/\/".$_SERVER['SERVER_NAME']."\/(.+)\".+\/>/U", $art[0]->text, $b);



Цитата:
Потом я закрываю кавычку и вставляю php код, после чего снова открываю и заканчиваю регулярное выражение.


вы не понимаете, как это работает, что ли?
сравните

Код: $t = '.*';
preg_match('/' . $t . '/', '12345678', $b);
var_dump($b);
Автор: Spy686
Дата сообщения: 09.05.2012 10:43
регулярку - запятая в начале строки
не подскажете ?
Автор: Cheery
Дата сообщения: 10.05.2012 02:57
Spy686

Цитата:
регулярку - запятая в начале строки

ну хоть основы посмотрите, неужели даже такие вещи спрашивать надо?
/^,/
Автор: Spy686
Дата сообщения: 10.05.2012 12:21
да я так пробывал - не катит

http://regexpr.ru/?pattern=%2F%5E%2C%2F&subject=2007-11-25%0D%0A243-12-3%0D%0A%2C+%EF%F0%E8%F4
Автор: holden321
Дата сообщения: 10.05.2012 12:31
а так http://regexpr.ru/?pattern=%2F%5E%2C%2Fm&subject=2007-11-25%0D%0A243-12-3%0D%0A%2C+%EF%F0%E8%F4
Автор: Spy686
Дата сообщения: 10.05.2012 12:32
ага? спс
Автор: Spy686
Дата сообщения: 18.05.2012 21:54
как написать регулярку чтобы удаляла только <strong>ЛюбоеОдноеСлово</strong>, а не все подкрашеное

Так будет кратко и всем понятно.</p>
<strong>© RET_FRAN</strong></p>
<p>Спасибо <strong>The_crow</strong> и <strong>natusechka</strong>.</p>
<p>Не смог в КоАПе найти статью про смотрение телевизора между 23 и 7 утра. Чем регламентируется?</p>
message_10276861"><p><strong>ЛюбоеОдноеСлово</strong>,
да все тем же. ТИШИ

Добавлено:
сделаю так :

/<strong>.*?<\/strong>,/m
Автор: Sutar
Дата сообщения: 16.06.2012 23:12
Вот есть код:


Код: if(preg_match("|([a-z0-9_\.\-]{1,20})|is", $_POST["login"]) {echo "OK!"; exit;}
else {echo "ERROR!"; exit;}
Автор: holden321
Дата сообщения: 16.06.2012 23:35
ну дак двойка то встречается. тут надо с другой стороны подходить: "если не" то error
Автор: 2YuraN
Дата сообщения: 17.06.2012 01:26
holden321 Это все равно, что прятать голову в песок

Sutar


Код: <?php
if(isset($_POST["submit"]))
{
if(preg_match('#^[a-z0-9]{1,20}$#', $_POST["login"])) {echo "OK!"; exit;}
else {echo "ERROR!"; exit;}
}
?>

<form name="userlogin" method="post" action="">
<input type="text" name="login"/><br/>
<input type="submit" name="submit" value="OK"/>
</form>
Автор: Sutar
Дата сообщения: 17.06.2012 01:38
так в чем проблема проверки?
Автор: 2YuraN
Дата сообщения: 17.06.2012 01:42
У тебя не задано, что проверка символов должна соответствовать началу и концу проверяемого выражения.

Добавлено:
То бишь оно находило символ в слове соотв. тому, который разрешен в классе и выбивало тебе TRUE, несмотря на то, что дальше были символы не разрешенные

Добавлено:
Судя по тому, что вопросов не осталось, иду спать)
Автор: Sutar
Дата сообщения: 17.06.2012 11:52
2YuraN
Спасибо что обьяснил и дал скрипт)
Автор: Spy686
Дата сообщения: 24.06.2012 22:08
https://fi6.trimmg.com/profile_images/7532677739/NGatsana_1Fist_reasonably_small.jpg

отсюда вытянуть NGatsana_1Fist.


<?php

$content = "https://fi6.trimmg.com/profile_images/7532677739/NGatsana_1Fist_reasonably_small.jpg";

preg_match_all("$/(.*?)_reasonably", $content, $tables);

print_r($tables);

?>

что не так?

Проверка
Автор: Cheery
Дата сообщения: 24.06.2012 22:29
Spy686

Цитата:
что не так?

все
1) нет кавычек вокруг регулярного выражения
2) оно неправильно записано - что там делает $??
3) оно должно закрываться тем же символом, которым и открыто (в данном случае с помощью / )
Автор: Spy686
Дата сообщения: 24.06.2012 23:01
Cheery

как указать что надо выбрать после последнего "/"

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: Xitami Web Server + PHP+ zend optimizer


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.