|
40.8 Кб |
|
| Есть php скрипт который заменяет текст в файлах. Условия замены записаны в txt файле.
Пример условия: <replace>что меняем<|||>на что меняем<|||>наш префикс</replace>
Остальное опишу на картинке. Прошу подсказать как правельно составить условие для замены. | |
|
|
|
|
|
|
|
для: sellerr
(11.12.2013 в 01:39)
| | Нужно жадный поиск: заменить на нежадный: | |
|
|
|
|
|
|
|
для: Sfinks
(11.12.2013 в 08:58)
| | Чтото непомогло. Можете полностью код написать ?
Заранее благодарен. | |
|
|
|
|
|
|
|
для: sellerr
(11.12.2013 в 22:04)
| | Ну если бы вы написали его тут тестом, то я бы скопипастил и исправил. А перепечатывать с картинки не охото. | |
|
|
|
|
138.5 Кб |
|
|
для: Sfinks
(11.12.2013 в 22:08)
| | заменить текст с 1513 по 1518 строку а именно
<table width="180" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="6"><img src="/templates/00051/images/spacer.gif" width="6" height="1" alt="" /></td>
<td width="164" align="left" class="bltitle">Новости по дням</td>
<tr>
</table></td>
Напомню что в php файле условия замены берутся из txt файла, пример условия
<replace><table width="180" border="0" cellspacing="0" cellpadding="0">([\t]*)Новости по дням([^\t]*)</table></td><|||><|||>regex</replace> | |
|
|
|
|
152 байт |
|
|
для: sellerr
(11.12.2013 в 22:21)
| | Для наглядности, сохраню файл замен сюда же.....
Ща ченить накрапаю.... | |
|
|
|
|
147 байт |
|
|
для: Sfinks
(11.12.2013 в 22:29)
| | А откуда там вообще \t ?
Вот с таким условием, все находится верно:
(ща код прикреплю.... пока мне файл нужен) | |
|
|
|
|
|
|
|
для: Sfinks
(11.12.2013 в 22:48)
| | какой именно файл нужен? | |
|
|
|
|
159 байт |
|
|
для: sellerr
(11.12.2013 в 22:54)
| | что ж вы так торопитесь.... См. вложение и код:
<?php
header('Content-type: text/plain; charset=utf-8');
$replace = file_get_contents('http://softtime.ru/forum/files/90524-20131211225717.txt');
preg_match_all('#<replace>(.*?)<\|\|\|>(.*?)<\|\|\|>(.*?)</replace>#si', $replace, $replaces);
$source = file_get_contents('http://softtime.ru/forum/files/90524-20131211222131.txt');
foreach($replaces[1] as $key => $pattern){
preg_match_all('#'.$pattern.'#s', $source, $out);
}
print_r($out);
|
Результат
Array
(
[0] => Array
(
[0] => <table width="180" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="6"><img src="/templates/00051/images/spacer.gif" width="6" height="1" alt="" /></td>
<td width="164" align="left" class="bltitle">Новости по дням</td>
<tr>
</table></td>
)
[1] => Array
(
[0] =>
<tr>
<td width="6"><img src="/templates/00051/images/spacer.gif" width="6" height="1" alt="" /></td>
<td width="164" align="left" class="bltitle">
)
[2] => Array
(
[0] => >
)
[3] => Array
(
[0] => </td>
<tr>
)
)
|
| |
|
|
|
|
|
|
|
для: Sfinks
(11.12.2013 в 22:57)
| | Не работает ни в php ни в редакторе notepad++
В notepad++ работает только мое условие но нетак как мне надо... (захватывает много лишнего) | |
|
|
|
|
119.2 Кб |
|
|
для: sellerr
(11.12.2013 в 23:23)
| | Давайте начнем заново.
Есть тхт файл (залил новый).
Нужно условие, которое удалит строки от 1510 до 1529 | |
|
|
|
|
|
|
|
для: sellerr
(11.12.2013 в 23:29)
| | Условие <table width="180" border="0" cellspacing="0" cellpadding="0">((.(?!<table))+?)Новости по дням(.*?)</table></td> работает в notepad++ но если выбрать режым "с учетом переноса строк"... прошу допиляйте условие )) | |
|
|
|
|
|
|
|
для: sellerr
(11.12.2013 в 23:35)
| | > Не работает ни в php
Что значит не работает? Не заменяет? Само собой. Надо же немного переработать скрипт. preg_match_all() - находит. А заменяет preg_replace(). Я просто показал, как должен выглядеть патерн.
> работает в notepad++
Вообще, о том, где предполагается использовать РВ следовало написать в самом первом посте. Я, например, notepad++ не пользуюсь. И не стал бы заморачиваться. Удивительно, что работает.
> но если выбрать режым "с учетом переноса строк"...
Так и должно быть. В моем php-скрипте для этого служит модификатор "s" | |
|
|
|
|
|
|
|
для: Sfinks
(12.12.2013 в 08:12)
| | Извените меня, но я немного натупил и не сказал сразу, что условие записываются в тхт файл и только в одну строку (точнее каждое новое условие с новой строки). Выходит что в строке (условию) нужно сразу указать возможность присутствия табуляции. Так что все условия из вашего скрипта нужно прописать в одну строку.
Насчет notepad++ там есть или просто поиск или замена с использованием регулярки... я просто тестировал условие, не менял, просто искал что найдет по такому то такому то условию.
Два часа читал про регулярные выражения, так и не нашол как правильно обьединить условия и указать исключения в условию )) Вот например:
<table>(тут все что угодно и даже возможен перенос строк но не содержит слово table>)</tr>table>
Обращаю внимание, что серединка содержит всё что угодно но не содержыт строку table> но заканчивается етой строкой )) | |
|
|
|
|
|
|
|
для: Sfinks
(11.12.2013 в 22:48)
| | Искомый текст по условию не в одной строке а с учетом табуляции. | |
|
|
|