|
|
|
| Можно ли задать вопрос: где я допустил ошибку, при получении текста, что стоит до тэга [log] и внутри их? Вроде писал так, чтобы в результирующем массиве получить текст + фрагмент [log]...[/log]. А оно срабатывает только если тэга будет два. В иных случаях -выдает непонятно что....
<?
$logs='
Один
[log]...[/log]
Два
[log]...[/log]
Три[log]...[/log]
Четыре
[log]...[/log]
';
preg_match(
"/([^\[log\]][\s\S]*)(?=\[log\])". // любой текст, кроме [log], до первого [log]
"(\[log\][\s\S]*[^\[\/log\]]\[\/log\])/" // лог, в тэгах [log]...[/log]
, $logs, $part_log);
echo '<pre>'; print_r($part_log); echo '</pre>';
?>
|
| |
|
|
|
|
|
|
|
для: Xenos
(12.08.2006 в 17:03)
| | как оказалось: найти решение этому вопросу не сложно. сложнее стало, когда я сделал:
$logs='
Один
[log] [...] [/log]
Два
[log] [...] [/log]
Три[log] [...] [/log]
Четыре
[log] [...] [/log]
';
|
Т.о. если я мог в патерне написать, до этого: .... ([^\[]*), то теперь это не получается и выдает пустые массивы... В итоге прошу помощи, если это возможно, в текущей ситуации. Скрипт выглядит, сейчас так:
<?
$logs='
Один
[log] [...] [/log]
Два
[log] [...] [/log]
Три[log] [...] [/log]
Четыре
[log] [...] [/log]
';
preg_match_all(
"/([^\[log\]]*)(?=\[log\])". // любой текст, кроме [log], до первого [log]
"(\[log\][^\[\/log\]]*\[\/log\])/" // лог, в тэгах [log]...[/log]
, $logs, $part_log);
unset($part_log[0]);
echo '<pre>'; print_r($part_log); echo '</pre>';
?>
|
| |
|
|
|
|
|
|
|
для: Xenos
(12.08.2006 в 17:03)
| | Ап..
и уточнение, что может быть [log] [...] [/log], а может и [log] []... [/log] и как угодно... | |
|
|
|
|
|
|
|
для: Xenos
(13.08.2006 в 21:21)
| | Мдям-с... понедельник) тишина... я сообразил, как отфильтровать все, что до / идет... а как именно полностью слово [/log]...
И я могу надеяться на ответ? :) | |
|
|
|
|
|
|
|
для: Xenos
(13.08.2006 в 21:21)
| | Используйте регулярное выражение вида
"/(\[log\](.*?)\[\/log\])/"
|
конструкция .*? - будет выбирать минимальное число символов в которых не будет [/log] | |
|
|
|
|
|
|
|
для: cheops
(14.08.2006 в 16:52)
| |
<?php
preg_match ("@((.*?)\[log\](.*?)\[/log\])*@", $text, $matches);
?>
|
Так вроде | |
|
|
|
|
|
|
|
для: Vitas
(14.08.2006 в 18:19)
| | конструкция с точкой, к сожеланию, не сработает, если будет новая строчка до тэга. (
поэтому выкручивался иначе | |
|
|
|
|
|
|
|
для: Xenos
(16.08.2006 в 19:02)
| | Добавьте модификатор s - он позволяет обойти ограничения новой строчки. | |
|
|
|