Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вытащить текст из нужного места в строке

Сообщения:  [1-10]   [11-11] 

 
 автор: Петр   (09.07.2007 в 06:13)   письмо автору
 
   для: kasmanaft   (05.07.2007 в 14:59)
 

Большое спасибо, очень выручили

   
 
 автор: kasmanaft   (05.07.2007 в 14:59)   письмо автору
 
   для: Петр   (05.07.2007 в 13:41)
 

О как!

<?php
$text 
'+15';
//$text = '+15<br>+20';
//$text = '+1';
//$text = '-5';
echo preg_replace("#(?<!<br>)((\+|-)\d++)(?!<br>)#e""sprintf('%+d', $1-5).'<br>'.sprintf('%+d', $1+5)"$text);
?>

Если минусы не нужны, замените (\+|-) на \+

   
 
 автор: Петр   (05.07.2007 в 13:41)   письмо автору
 
   для: kasmanaft   (05.07.2007 в 13:19)
 

Спасибо, все нормально работает
А как мне допустим получить:
Из массива выводятся данные, некоторые ячейки содержат +10<br>+20, некоторые просто +15, как мне разбить одиночное значение на интервал? (прибавить и отнять 5 от значения), чтобы было +10 и +20

   
 
 автор: kasmanaft   (05.07.2007 в 13:19)   письмо автору
 
   для: Петр   (05.07.2007 в 12:55)
 

>> Конкретно этот код, что я привел, работает?
Ну, конечно, <table.........</table> нужно было заменить :)
>> Может подскажете другое
Нет уж давайте додумаем предыдущий вопрос... :)
Может быть у Вас таблица не одной строкой записана? тогда нужно добавить модификатор 's'
.........)?</td></tr>|s

Покажите свой код, тогда можно будет точно сказать почему не работает.

> Исходная строка: 123<br>911, как вырезать из нее только первое число?
Всю строку описывать не обязательно, можно описать только то, что нужно получить:
"^\d+" - найдет как раз "123" (если строка начинается с "123", иначе уберите "^")

   
 
 автор: Петр   (05.07.2007 в 12:55)   письмо автору
 
   для: kasmanaft   (05.07.2007 в 11:37)
 

Возвращает пустой массив.
Может подскажете другое, мне можно заменить регулярным выражением следущее:
Исходная строка:
123<br>911
Как вырезать из нее только первое число, т.е. убрать <br> и второе число (второе число всегда 3 символа)?
Это все в Smarty, поэтому надо как-то экранировать {}

   
 
 автор: kasmanaft   (05.07.2007 в 11:37)   письмо автору
 
   для: Петр   (05.07.2007 в 11:20)
 

Так вам заменить надо или вытащить? Конкретно этот код, что я привел, работает?
Может быть, попропробуйте вот так(?:<br>[\d,.]*%)?

   
 
 автор: Петр   (05.07.2007 в 11:20)   письмо автору
 
   для: kasmanaft   (05.07.2007 в 11:16)
 

Так и не получилось...
Одна строка только подходит, заменяется

   
 
 автор: kasmanaft   (05.07.2007 в 11:16)   письмо автору
 
   для: Петр   (05.07.2007 в 11:12)
 

Ыыыы... они в массив и не попадут..

<?php
$text 
'<table.........</table>';
preg_match_all("|<tr><td[^>]+>(.*?)</td><td[^>]+>(.*?)(?:<br>.*?)?</td></tr>|"$text$regs);
print_r($regs);
?>

   
 
 автор: Петр   (05.07.2007 в 11:12)   письмо автору
 
   для: kasmanaft   (05.07.2007 в 11:04)
 

Нет, так тоже не получилось, только одна строка выбралась, а должны несколько.
Проценты, не должны попадать в массив, их надо просто пропустить

   
 
 автор: kasmanaft   (05.07.2007 в 11:04)   письмо автору
 
   для: Петр   (05.07.2007 в 10:39)
 

Попробуйте заменить <br>(?) на (?:<br>.*?)?

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования