Написал такой код
$file = file_get_contents ("C:\file.txt");
preg_match ('/text([\w\W]*?)112233/i', $file, $block);
$block0 = $block[0];
$re = str_replace ('text', 'tetetext', $block0);
str_replace ($block0, $re, $file);
Но не работает. Подскажите пожалуйста что я сделал не так
Спустя 16 минут, 12 секунд (10.06.2012 - 18:36) GET написал(а):
разбей explode вытащенный текст по своим цифрам а потом рабгтай с этим массивом через foreach. Пишу с мобильника поэтому код написать не могу
Спустя 1 час, 46 минут, 24 секунды (10.06.2012 - 20:23) Bratishka написал(а):
Спасибо, с помощь explode разбил. Теперь этот массив пропарсить надо. А это у меня не получалось и раньше через foreach и я хз как это сделать
Спустя 8 часов, 37 минут, 15 секунд (11.06.2012 - 05:00) GET написал(а):
$file = file_get_contents ("C:/file.txt");
$arr = explode('112233',$file);
foreach($arr as $val)
{
echo $val.'<br>';// Это куски текста разбитые цифрами
}
Спустя 8 часов, 13 минут, 51 секунда (11.06.2012 - 13:14) Bratishka написал(а):
А как мне теперь эти куски все обработать регулярным выражением?
Спустя 3 минуты, 11 секунд (11.06.2012 - 13:17) GET написал(а):
Bratishka
А что нужно?
А что нужно?
Цитата |
foreach($arr as $val) { echo $val.'<br>';// Это куски текста разбитые цифрами } |
$val - это и есть твой кусок...foreach их перебирает по порядку, что хочешь с ними то и делай.
Спустя 11 минут, 3 секунды (11.06.2012 - 13:28) Bratishka написал(а):
т.е. $val это фактически как строка и оно может обработаться preg_match
у меня не получалось ( или я не так что-то делал
у меня не получалось ( или я не так что-то делал
Спустя 13 минут, 13 секунд (11.06.2012 - 13:41) GET написал(а):
Цитата |
фактически как строка |
Да, ты разбил свой текст на несколько фрагментов каждый из которых сам является текстом, т.е. строку разбил на строки и разбил их по '112233'. Можешь их теперь обрабатывать, как хочешь. Только не забывай, что это не просто строки, а массив из строк, поэтому нужна foreach.
Можно обойтись и без foreach, если например ты точно знаешь номер фрагмента, например echo $arr[0]; выведет на экран первый фрагмент.
Спустя 1 час, 3 минуты, 52 секунды (11.06.2012 - 14:45) Bratishka написал(а):
foreach($arr as $val)
{
echo $val.'<br>';// Это куски текста разбитые цифрами
}
Такой код не работает :(
Ругается на array to string conversation в этой строке echo $val.'<br>';
Спустя 9 минут, 33 секунды (11.06.2012 - 14:55) GET написал(а):
$file='sdsddd1sdsd1xccdedw1sascasdcq1';
$arr = explode('1',$file);
foreach($arr as $val)
{
echo $val.'<br>';// Это куски текста разбитые цифрами
}
только что проверил работает. Значит массив у тебя пустой.
Вот так сделай:
$file = file_get_contents ("C:/file.txt");
$arr = explode('112233',$file);
if (count($arr )>0)
{
foreach($arr as $val)
{
echo $val.'<br>';// Это куски текста разбитые цифрами
}
}
else echo 'У меня же массив пустой!';
Спустя 4 часа, 9 минут, 52 секунды (11.06.2012 - 19:04) Bratishka написал(а):
A.B.C.
спасибо, вроде работает. Выводит оба блока текста, только вот цифр нету. Можно как-нибудь сделать чтобы цифры не выкидывались при explode?
спасибо, вроде работает. Выводит оба блока текста, только вот цифр нету. Можно как-нибудь сделать чтобы цифры не выкидывались при explode?
Спустя 51 минута, 32 секунды (11.06.2012 - 19:56) Bratishka написал(а):
Сделал свой код, на основе Вашего - не работает, не парсит. Пишет у preg_match строкой должен быть второй параметр
массив не пустой, регулярка норм строку на части бьет, получается массив
Подскажите пожалуйста что не так (
$filename = "Название";
$testtu = многомного текста;
$testt = str_replace("\\","",$testtu);
preg_match_all ("/{'id':(.*?)<\/a>','name_text/i", $testt, $textblock);
if (count($textblock)>0)
{
foreach ($textblock as $value){
preg_match("/<a href='\/(.*?)' target='_blank'>".$filename."/i", $value, $tblink);
print_r ($tblink);}
}
массив не пустой, регулярка норм строку на части бьет, получается массив
Подскажите пожалуйста что не так (
Спустя 57 минут, 22 секунды (11.06.2012 - 20:53) walerus написал(а):
preg_match_all ("/{'id':(.*?)<\/a>','name_text/i", $testt, $textblock);
после этого ты получишь массив, а не строку
сделай
print_r($textblock);все станет понятно и проверка будет иначе
if (!emty( $textblock[1] ) )
Спустя 8 минут, 15 секунд (11.06.2012 - 21:02) Bratishka написал(а):
walerus
а как элементы массива сделать строкой чтобы по каждому пройтись preg_match ?
а как элементы массива сделать строкой чтобы по каждому пройтись preg_match ?
Спустя 2 часа, 3 минуты, 41 секунда (11.06.2012 - 23:05) FatCat написал(а):
$file = 'Первый кусок текста112233Втророй кусок текста112233Третий кусок текста';
$file = explode('112233',$file); // Разбиваем на массив
foreach($file as $k=>$v) // цикл по элементам массива
{
$v = str_replace("кусок","кусочек",$v);
// ... и другие манипуляции с текстом в элементе массива
$file[$k] = $v; // Сохраняем результаты работы с текстом в массиве.
}
$file = implode('112233',$file); // Собираем строку из массива