Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > веделение всего что находится между "[" и "]"


Автор: HappyMan 16.4.2005, 23:16
веделение всего что находится(в строке) между "[" и "]" с помощью регулярных выражений! и загонка всего этого в массив. такое возможно? если "да" то как?

Автор: InfMag 17.4.2005, 00:13
Пока что у меня получилось выделить только весь сам [xxx]
Код

$text = "Hello World! [text text text] Hello World!<br>\n";
echo $text;
$text = preg_replace("%(\[)+(.*)+(\])%si", "<b>\\0</b>", $text);
echo $text;

Добавлено @ 00:16
Готово! smile
Код

<?php
$text = "Hello World! [text text text] Hello World!<br>\n";
echo $text;
$text = preg_replace("%(\[)(.*)(\])%si", "\\1<b>\\2</b>\\3", $text);
echo $text;
?>

Автор: HappyMan 17.4.2005, 12:53
InfMag
хмм.. врод не совсем то что нада...
например:
Код

$text = "Hello World! [x1],  [x2] Hello  [x333] World!";
$mArray = preg_replace("some operatons", $text);


после выполнения элементы $mArray должны быть:
$mArray[0] = "x1";
$mArray[1] = "x2";
$mArray[2] = "x333";

во как!

Автор: Irokez 17.4.2005, 13:01
Код

$text = "Hello World! [x1],  [x2] Hello  [x333] World!";
preg_match_all('/(\[)+(.*)+(\])/Ui', $text, $matches, PREG_PATTERN_ORDER);
$text = str_replace($matches[0], $matches[2], $text);
echo $text;

Автор: HappyMan 17.4.2005, 13:04
Irokez
странно.. выводит:
Hello World! 1, 2 Hello 3 World!
Добавлено @ 13:05
Irokez
может я чего-то не понимаю.. где тут нужный массив?

Автор: Irokez 17.4.2005, 13:05
посмотри массив $matches[2]

Автор: HappyMan 17.4.2005, 13:07
ну можно и в строчку через пробел... я потом эксплоде сделаю smile
Добавлено @ 13:07
массив $matches[2] = Array!!!!!
Добавлено @ 13:08
выводит:
Array

Автор: Irokez 17.4.2005, 13:09
Цитата(HappyMan @ 17.4.2005, 13:07)
Добавлено @ 13:07
массив $matches[2] = Array!!!!!
Добавлено @ 13:08
выводит:
Array

smile smile smile smile smile
print_r($matches[2]);

Автор: HappyMan 17.4.2005, 13:09
Irokez
какой-то двумерный массив получается..
х1, х2... нашел в $matches[0]
Добавлено @ 13:16
echo $matches[0][0];
- выводит [x1] - СО скобками! а без скобок можно??
Добавлено @ 13:17
и чтобы массив одномерный был как-нибудь можно?

Автор: Mal Hack 17.4.2005, 13:50
Код
<?php

$text = "Hello World! [x1],  [x2] Hello  [x333] World!";
preg_match_all('/(?:\[)+(.*)+(?:\])/Ui', $text, $matches, PREG_PATTERN_ORDER);
$matches = $matches[1];
print_r($matches);
?>


Автор: RAJ 17.4.2005, 14:02
HappyMan посмотри тут:
http://myphp.net.ru/functions/index.php?preg-match-all

Автор: HappyMan 17.4.2005, 17:48
Mal Hack
не работает
Добавлено @ 17:51
Array ( [0] => 1 [1] => 2 [2] => 3 )

Автор: Mal Hack 17.4.2005, 19:06
Цитата(HappyMan @ 17.4.2005, 18:48)
не работает

Сорри, тестил на скорую руку...
Код
<?php
$text = "Hello World! [x1],  [x2] Hello  [x333] World!";
preg_match_all('/(?:\[)(.+?)(?:\])/', $text, $matches, PREG_PATTERN_ORDER);
$matches = $matches[1];
print_r($matches);
?>

Автор: HappyMan 17.4.2005, 19:11
Mal Hack
спасибо! на этот раз все ОК!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)