$frc = "http://imissit/yep/2010333_187.html";
do{
$pt='/([\w\d\.\/\:\/\/]*)_(\d+)(\.html)/is';
$aw = ${2}-1;
echo $aw;
$repl="$1$aw$3";
echo $repl;
$loc=preg_replace($patt, $repl, $frc);
echo $loc;}
while($aw>0);
Как строить?
Парсер матерится слудующим образом
Notice: Undefined variable: 2 in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\marketsite\sho.php on line 5
-1$1-1$3
Notice: Undefined variable: patt in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\marketsite\sho.php on line 9
Warning: preg_replace() [function.preg-replace]: Empty regular expression in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\marketsite\sho.php on line 9
Спустя 32 минуты, 14 секунд (4.07.2010 - 10:48) Rand написал(а):
Если честно, не очень понял, что ты понаписал, но обрати внимание на то, что
шаблон ты пишешь в переменной $pt, а в preg_replace у тебя $patt
шаблон ты пишешь в переменной $pt, а в preg_replace у тебя $patt
Спустя 4 минуты, 50 секунд (4.07.2010 - 10:53) Nuzhser написал(а):
Очень сильно извиняюсь действительно втыкнул
Подправил $patt и все равно дает ошибку
Notice: Undefined variable: 2 in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\marketsite\sho.php on line 5
-1$1-1$3http://imissit/yep/2010333-1.html
Подправил $patt и все равно дает ошибку
Notice: Undefined variable: 2 in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\marketsite\sho.php on line 5
-1$1-1$3http://imissit/yep/2010333-1.html
Спустя 9 минут, 26 секунд (4.07.2010 - 11:02) tomash написал(а):
$aw = ${2}-1;что это за конструкция?
нужно вот так
$aw--;
Спустя 2 минуты, 22 секунды (4.07.2010 - 11:05) Rand написал(а):
А вот это что такое?
$aw = ${2}-1;
$repl="$1$aw$3";
Во первых, ты ничего кроме присвоения переменной текста выражения, ещё не сделал. Во вторых, в PHP нельзя так обращаться к результату - $1
$aw = ${2}-1;
$repl="$1$aw$3";
Во первых, ты ничего кроме присвоения переменной текста выражения, ещё не сделал. Во вторых, в PHP нельзя так обращаться к результату - $1
Спустя 2 минуты, 52 секунды (4.07.2010 - 11:08) Nuzhser написал(а):
Так тем болле не хочет работать
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\marketsite\sho.php on line 10
$frc = "http://imissit/yep/2010333_187.html";
do{
$patt='/([\w\d\.\/\:\/\/]*)_(\d+)(\.html)/is';
$repl="$1$2--$3";
echo $repl;
$loc=preg_replace($patt, $repl, $frc);
echo $loc;}
while($2>0);
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\marketsite\sho.php on line 10
Спустя 19 минут, 54 секунды (4.07.2010 - 11:28) Rand написал(а):
Ты не правильно работаешь с регулярными выражениями в PHP, читай мануал по функциям preg_*. Вот так было бы правильно:
<?
$frc = "http://imissit/yep/2010333_187.html";
$pt='/([\w\d\.\/\:\/\/]*)_(\d+)(\.html)/is';
preg_match($pt, $frc, $r);
while($r[2]>1) {
$frc=$r[1]."_".--$r[2].$r[3];
echo $frc."<br>";
}
?>
Спустя 8 минут, 10 секунд (4.07.2010 - 11:36) tomash написал(а):
$frc = "http://imissit/yep/2010333_187.html";
preg_match("/^(?:[\w\d\.\/\:\/\/]*)_(\d+)(?:\.html)$/is", $frc, $match);
while($match[1]>0)
{
$frc = str_replace('_'.$match[1].'.html', '_'.(--$match[1]).'.html', $frc);
echo "$frc<br>";
}
Rand
Блин, то же самое хотел сказать
Спустя 2 минуты, 8 секунд (4.07.2010 - 11:38) Nuzhser написал(а):
Признаю все работает это через прег матч. А я пробовал через прег реплейс и в мануале пишет
Я читал по регах доки и там было написано что в переменную $1 записывается первое совпадение и тд.
Например вот такой скрипт он же работае по выявлению линков в тексте
$text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" >$3</a>", $text);
И по аналоги я думал создать свой реплейс.
Спасибо за солюшн.
<?php
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>
Я читал по регах доки и там было написано что в переменную $1 записывается первое совпадение и тд.
Например вот такой скрипт он же работае по выявлению линков в тексте
$text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" >$3</a>", $text);
И по аналоги я думал создать свой реплейс.
Спасибо за солюшн.
Спустя 3 минуты, 1 секунда (4.07.2010 - 11:41) Nuzhser написал(а):
Еще раз спасибо оба примера работоспособные.
Жаль шо не сам решил
Жаль шо не сам решил

Спустя 10 секунд (4.07.2010 - 11:41) tomash написал(а):
Nuzhser
Можно и через прег реплейс, если не жаль ресурсов! Регулярки в цикле не самое лучшее решение
Можно и через прег реплейс, если не жаль ресурсов! Регулярки в цикле не самое лучшее решение
Спустя 1 час, 38 минут, 43 секунды (4.07.2010 - 13:20) Ineed$ написал(а):
Придумал ехая в метро, так что за работоспособность не ручаюсь, но по идее, как то так
preg_replace('#(http:\/\/[\w\d]{.*?})_([\d]{.*?})#','$1($2+1)',$str);
Спустя 12 минут, 41 секунда (4.07.2010 - 13:33) Nuzhser написал(а):
если еще едешь думай дальше а то результат на выходе такой же шо и на входе
$frc = "http://imissit/yep/2010333_187.html";
preg_replace('#(http:\/\/[\w\d]{.*?})_([\d]{.*?})#','$1($2+1)',$frc)
;
echo $frc;
и получаю
http://imissit/yep/2010333_187.html
а мне вооще то надо бы http://imissit/yep/2010333_186.html
//Да здравствует самый дешевый в мире транспорт(а может и не самый)
$frc = "http://imissit/yep/2010333_187.html";
preg_replace('#(http:\/\/[\w\d]{.*?})_([\d]{.*?})#','$1($2+1)',$frc)
;
echo $frc;
и получаю
http://imissit/yep/2010333_187.html
а мне вооще то надо бы http://imissit/yep/2010333_186.html
//Да здравствует самый дешевый в мире транспорт(а может и не самый)
Спустя 1 час, 11 минут, 26 секунд (4.07.2010 - 14:44) Ineed$ написал(а):
а самому доделать слабо?
Спустя 5 часов, 53 минуты, 2 секунды (4.07.2010 - 20:37) Ineed$ написал(а):
исправил
$string = "http://imissit/yep/2010333_187.html";а если у тебя пхп5.3 и выше тогда можно сделать так
$string = preg_replace_callback('#(.*?_)(.*?).html#i', 'ndec', $string);
function ndec($matches)
{
return $matches[1] . (--$matches[2]) . '.html';
}
$string = "http://imissit/yep/2010333_187.html";к сожалению у меня его нема и потому проверить возможности не было, но по идее должно работать.
$string = preg_replace_callback(
'#(.*?_)(.*?)(.html)#i',
create_function('$matches', 'return $matches[1] . (--$matches[2]).html;'),
$string
);
Спустя 1 час, 32 минуты, 31 секунда (4.07.2010 - 22:09) Nuzhser написал(а):
Первый работает. Второй нет
Notice: Use of undefined constant html - assumed 'html' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\marketsite\sho.php(29) : runtime-created function on line 1
http://imissit/yep/2010333_186html
у меня пхп 5.3.1
Notice: Use of undefined constant html - assumed 'html' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\marketsite\sho.php(29) : runtime-created function on line 1
http://imissit/yep/2010333_186html
у меня пхп 5.3.1
Спустя 15 минут, 50 секунд (4.07.2010 - 22:25) Ineed$ написал(а):
тогда так
$string = "http://imissit/yep/2010333_187.html";подстраивай под свои нужды. удачи!
$string = preg_replace_callback(
'#(.*?_)(.*?)(.html)#i',
create_function('$matches', 'return $matches[1] . (--$matches[2]) . matches[3];'),
$string
);
Спустя 28 минут, 6 секунд (4.07.2010 - 22:53) Nuzhser написал(а):
Спасибо

_____________
Лэт ит би