|
|
|
| есть:
$newstr= preg_replace("!\|(.*?)(\|+?|$)!si",'<a href="'.$url.'">\\1</a>',$str);
ищем в тексте |выделенный кусок|, и меняем его на ссылку. Если символа вертикальной черты не встречается, строка соответственно не меняется.
А можно ли сделать так, что бы она бралась целиком? | |
|
|
|
|
|
|
|
для: Zilog
(30.09.2012 в 01:26)
| | Пока не очень понятно, можно пример текста в $str или описание на примере, что сейчас и что хочется получить? | |
|
|
|
|
|
|
|
для: cheops
(30.09.2012 в 08:08)
| | пример: Пока не очень понятно, |можно пример текста в $str| или описание на примере
выделенная часть находится между '|' или от '|' и до конца строки. А вдруг '|' не встречается? — вот в чём вопрос. Можно ли настроить регулярку так, что бы в этом случае вся строка возвращалась. | |
|
|
|
|
|
|
|
для: Zilog
(30.09.2012 в 21:08)
| |
<?php
$s1 = 'часть1';
$s2 = 'часть1|часть2';
$s3 = 'часть1|часть2|часть3';
$pattern = '#^.*?(\|(.*?)(\|[^\|]*?$|$))#';
echo preg_replace($pattern,"$2$4",$s1).'<br>'; // часть1
echo preg_replace($pattern,"$2$4",$s2).'<br>'; // часть2
echo preg_replace($pattern,"$2$4",$s3).'<br>'; // часть2
|
| |
|
|
|
|
|
|
|
для: Sfinks
(30.09.2012 в 22:04)
| | спаисбо, друг!
Теперь осталось расшифровать это заклинание :)
upd. Только оно делает на то, что нужно. Поясню на след. примере:
есть строка:
гидродинамические рассуждения показывают, что самая простая |звуковая волна| невозможна в реальных средах
|
после обработки на выходе должна быть строка, где выделенный фрагмент заключен в теги <a></a>, то бишь становится ссылкой. Ту регулярку, что я привёл в первом посте - с этой задачей справляется, за исключением того, что если бы в исходной строке отсутствовали '|'. | |
|
|
|
|
|
|
|
для: Zilog
(01.10.2012 в 00:11)
| | Сам не ожидал, но получилось! (Впервые удалось разобраться с условными шаблонами =)))
<?php
$s1 = 'Теоремы';
$s2 = 'Теорема |Пифагора';
$s3 = 'Доказательство |теоремы| Пифагора';
$pattern = '#((^.*?)\|)?(?(1)(([^\|]*)\|?)|(^.*?$))#';
echo preg_replace($pattern,"$2<a href=\"#\">$4$5</a>",$s1).'<br>'; // <a href="#">Теоремы</a>
echo preg_replace($pattern,"$2<a href=\"#\">$4$5</a>",$s2).'<br>'; // Теорема <a href="#">Пифагора</a>
echo preg_replace($pattern,"$2<a href=\"#\">$4$5</a>",$s3).'<br>'; // Доказательство <a href="#">теоремы</a> Пифагора
|
Разбирайтесь:
PCRE в Википедии
Еще очень полезная статья | |
|
|
|
|
|
|
|
для: Sfinks
(01.10.2012 в 11:21)
| | >Сам не ожидал, но получилось! (Впервые удалось разобраться с условными шаблонами =)))[code]<?php
мда, я такое пока осилить не в состоянии :)
большущее спасибо, будем изучать. | |
|
|
|