preg_match и последующий вывод Возможно?

mokos

Новичок
preg_match и последующий вывод Возможно?

Начинаю учиться, сильно не пинайте

PHP:
<?php 
 if (preg_match("/Блок2/i", "Блок1 бла бла бла Блок2  бла бла бла")) {
      echo "Вхождение найдено.";  } 
else {      
echo "Вхождение не найдено.";  
}  
?>
Результат - Вхождение найдено.
А как практически реализовать чтобы echo выводил Блок2 бла бла бла

Перепробовал всякой ахинеи, естественно ничего не получается.
Или preg_match вообще не для этого?
 

AmdY

Пью пиво
Команда форума
тогда этот автомат умнее тебя ибо дал тебе правильный ответ
если много букв цитирую мануал
Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке. Используйте для этого strpos() либо strstr(), поскольку они выполнят эту задачу гораздо быстрее.
$pos = stripos("Блок1 бла бла бла Блок2 бла бла бла", "Блок2")
if ($pos !== false) {
substr("Блок1 бла бла бла Блок2 бла бла бла", "Блок2", $pos);
}
 

tardis

lazy
для начало надо составить регулярку, что это самое "Блок2 бла бла бла" ловилось, твоя же ловит только слово "Блок2". Ну а как вывести, тебе Апокалипсис все верно сказал.

если необходимо проверить наличие подстроки в заданной строке
по-моему это не совсем то, что ему нужно, да и Апокалипсис под первым примером, сдается мне, не эту подсказку подразумевал, а конкретно первый пример

-~{}~ 05.10.08 03:18:

AmdY
да, и с substr'ом ты накосячил :rolleyes:
 

mokos

Новичок
Чот я ни чо не понимаю.
У меня первый пример и приведён.
Array, 1, Вхождение найдено - всё это я видел, когда игрался.

А вот Блок2 бла бла бла ни разу.
 

tardis

lazy
Не Пример #1, а пример, который по счету первый на странице, т.е. этот
PHP:
<?php     
$subject = "abcdef";     
$pattern = '/^def/';     
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);     
print_r($matches);     
?>
и вообще, тебе лень описание функции внимательно прочитать. Там все описано яснее некуда.
 

mokos

Новичок
Array ( ) - ?

Я ж ещё в php как в тёмном лесу, у меня залит текстовый файл, большой но короткими абзацами, у азацев есть вначале свой идентификатор, слово. Мне нужно с определённого места вытягивать абзац. В цмску каждый совать не реально, их очень много.
 

AmdY

Пью пиво
Команда форума
tardis
:), действительно
$pos = stripos("Блок1 бла бла бла Блок2 бла бла бла", "Блок2");
if ($pos !== false) {
substr("Блок1 бла бла бла Блок2 бла бла бла", $pos);
}
 

AmdY

Пью пиво
Команда форума
точно, пропустил, мне почему-то казалось что она работает по другому
 

tardis

lazy
Автор оригинала: Армян
Проще strstr юзать
Это если у него нету Блока3, а судя вот по этому
Автор оригинала: mokos
у меня залит текстовый файл, большой но короткими абзацами, у азацев есть вначале свой идентификатор, слово. Мне нужно с определённого места вытягивать абзац.
он есть

-~{}~ 05.10.08 14:29:

Автор оригинала: mokos
Array ( ) - ?
Просто в данном примере регулярка совпадений не нашла, блин, ну прочитай ты описание функции, там есть все, что тебе надо. Обрати наконец свое внимание на параметр $matches. А потом вперед, в google, читать как составляются регулярки PCRE.

-~{}~ 05.10.08 14:38:

но если ты еще не созрел для регулярок, то AmdY прав, можно юзать strpos и substr. Находишь вхождение Блок2, потом вхождение конца абзаца (перевод строки вероятно), потом substr'ом вырезаешь все между.
 

mokos

Новичок
А еще можно вопрос
PHP:
$top=str_replace('xxx', 'yyy', $top);
Можно вместо yyy вставлять переменную? и как?
 

Beavis

Banned
mokos
Подводишь курсор перед 'yyy', нажимаешь 5 раз кнопку delete, нажимаешь шифт и цифру 4, и имя переменной.
 

Beavis

Banned
mokos
Я серьезно.. я просто объяснил на таком уровне, на котором ты, при определенных мозговых усилиях, сможешь усвоить информацию.
 

mokos

Новичок
Ещё какое, учитывая что даже в терминологию не могу въехать
 

Beavis

Banned
mokos
да тут вообще хрен разберешься.. переменные какие-то, функции... может ну всё это нафиг?
 
Сверху