|
|
|
| есть такой отрывок текста, взят из мануала php:
При использовании замены по шаблону с использованием ссылок
на подмаски может возникнуть ситуация, когда
непосредственно за маской следует цифра. В таком случае
нотация вида \\n приводит к ошибке: ссылка на первую
подмаску, за которой следует цифра 1, запишется как \\11,
что будет интерпретировано как ссылка на одиннадцатую
подмаску. Это недоразумение можно устранить, если
воспользоваться конструкцией \${1}1, указывающей на
изолированную ссылку на первую подмаску, и следующую за ней
цифру 1.
Пример 1. Использование подмасок, за которыми следует цифра
<?php
$string = "April 15, 2003";
$pattern = "/(\w+) (\d+), (\d+)/i";
$replacement = "\${1}1,\$3";
echo preg_replace($pattern, $replacement, $string);
?>
Результатом работы этого примера будет: April1,2003
Если во время выполнения функции были обнаружены совпадения
с шаблоном, будет возвращено измененное значение subject,
в противном случае будет возвращен исходный текст subject.
|
Из этого текста мне нужно получить 4-ре параграфа и код заключённый в pre code,
для заключения кода делаю так:
$text = preg_replace("#(<\?php.+?\?>)#s", "<pre><code>\\1</code></pre>", $text);
|
А как теперь сделать 4-ре параграфа заключённые в <p></p>, не трогая то что идёт от <pre><code> и до </code></pre>, т.е. 2-ва параграфа, затем <pre><code>, и ещё 2-ва параграфа?
В принципе если бы не было в тексте кода, можно было записать например так:
$text = preg_replace("#(.+[^\s])#", "<p>\\1</p>", $text);
|
Помогите решить задачу. | |
|
|
|
|
|
|
|
для: defi
(24.01.2011 в 16:55)
| |
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
$n='При использовании замены по шаблону с использованием
ссылок на подмаски может возникнуть ситуация, когда
непосредственно за маской следует цифра. В таком случае
нотация вида \\n приводит к ошибке: ссылка на первую
подмаску, за которой следует цифра 1, запишется как \\11,
что будет интерпретировано как ссылка на одиннадцатую
подмаску. Это недоразумение можно устранить, если
воспользоваться конструкцией \${1}1, указывающей на
изолированную ссылку на первую подмаску, и следующую за ней
цифру 1.
Пример 1. Использование подмасок, за которыми следует цифра
<?php
$string = "April 15, 2003";
$pattern = "/(\w+) (\d+), (\d+)/i";
$replacement = "\${1}1,\$3";
echo preg_replace($pattern, $replacement, $string);
?>
Результатом работы этого примера будет: April1,2003
Если во время выполнения функции были обнаружены совпадения
с шаблоном, будет возвращено измененное значение subject, в
противном случае будет возвращен исходный текст subject.';
preg_match('/(.+?)\n\r(.+?)\n\r(.+?)\n\r(.+?)\n\r(.+)/si',$n,$match);
echo '<p>';
echo $match[1];
echo '</p>';
echo '<p>';
echo $match[2];
echo '</p>';
echo '<pre>';
echo $match[3];
echo '</pre>';
echo '<p>';
echo $match[4];
echo '</p>';
echo '<p>';
echo $match[5];
echo '</p>';
?>
|
| |
|
|
|