|
Подскажите по регулярным выражениям php | ☑ | ||
---|---|---|---|---|
0
Ислам
19.02.14
✎
06:18
|
нужно сделать замену как это сделано на форумах PHPBB:
[img]blabla[/img] меняем на <img src="blabla"> [url]blabla[/url] меняем на <url href="blabla"> все остальные символы меняем функцией htmlspecialchars() Я первые две замены вот так сделал: $htmltext = preg_replace_callback( "#\[img\](.*?)\[/img\]#", function ($matches) {return ( '<img src="' . $matches[1] . '"/>' );}, $text ); $htmltext = preg_replace_callback( "#\[url\](.*?)\[/url\]#", function ($matches) {return ( '<url src="' . $matches[1] . '"/>' );}, $htmltext ); А если третью замену делаю: $htmltext = htmlspecialchars($htmltext); то все URL портятся. Как быть? Желательно попроще, а то не поверят что я сам сделал. |
|||
1
sda553
19.02.14
✎
06:52
|
А цель какая? вывести html внутри htmlа?
|
|||
2
Ислам
19.02.14
✎
07:11
|
(1) как вариант, да.
|
|||
3
Asmody
19.02.14
✎
07:54
|
Сделай htmlspecialchars до разбора тегов. Это если попроще
|
|||
4
Ислам
19.02.14
✎
08:03
|
(3) Тогда все ссылки испортятся до разбора тегов.
Вместо http:// везде станет http%3A%2F%2F Так не подходит. Нужно придумать так, чтобы htmlspecialchars сработало для всего кроме того что распознают первые два регулярных выражения. |
|||
5
Ислам
19.02.14
✎
08:41
|
Как сделать регулярное выражение, выбирающее все куски текста кроме
\[img\](.*?)\[/img\] и \[url\](.*?)\[/url\] ? |
|||
6
Ислам
19.02.14
✎
09:11
|
Или для простоты, как выбрать все куски текста кроме подстроки "blbla"?
например, текст: " ыв blbla к мв blbla аыыв blbla" Нужно получить: " ыв ", " к мв ", " аыыв " |
|||
7
Ислам
19.02.14
✎
09:27
|
как это сделать?
|
|||
8
Ислам
19.02.14
✎
10:23
|
Никто не знает регулярные выражения?
|
|||
9
Ислам
19.02.14
✎
10:41
|
На другом форуме подсказали так:
( . )( . ) и еще так: (_!_) Но не понятно куда это ставить и как должно работать |
|||
10
Ислам
19.02.14
✎
11:09
|
Помогите же мне хоть кто-нибудь!
|
|||
11
Ислам
19.02.14
✎
11:22
|
Хелп! Моя благодарность не будет иметь границ! (в разумных пределах, конечно)
|
|||
12
Ислам
19.02.14
✎
11:58
|
Готов даже заплатить!
|
|||
13
Ислам
19.02.14
✎
12:12
|
Мне очень нужно это сегодня сделать. Кто может помочь?
|
|||
14
Jaap Vduul
19.02.14
✎
12:13
|
||||
15
Ислам
19.02.14
✎
12:15
|
Даже не знаю как это можно тут применить. Скорее всего никак.
|
|||
16
Ислам
19.02.14
✎
12:37
|
Что еще можно попробовать сделать?
|
|||
17
Ислам
19.02.14
✎
13:28
|
Скажите
|
|||
18
vqwy
19.02.14
✎
13:29
|
в 9 же совет нормальный
|
|||
19
Ислам
19.02.14
✎
13:34
|
Никто не говорит что он не нормальный. Но мне нужно решить вопрос как можно скорее. Скажите как
|
|||
20
kokamoonga
20.02.14
✎
06:17
|
(6) (19) если нужно решить вопрос именно в такой формулировке как в (6), то простым сплитом это делается http://phpassist.com/17f44#1
|
|||
21
Ислам
20.02.14
✎
08:21
|
(20) нужно с учетом формулировки из (0), а именно: регулярными выражениями.
|
|||
22
Ислам
20.02.14
✎
08:22
|
Сделал так, но почему это выражение не работает?
$text = "начало текста[url=url 1]ссылка 1[/url]середина текста[url=url 2]ссылка 2[/url]конец текста"; preg_replace_callback( "#^|\[url=.*?\].*?\[/url\](.+?)\[url=.*?\].*?\[/url\]|$#", function ($matches) { echo "<pre>"; print_r ($matches); echo "</pre>"; }, $text ); Выдает: Array ( [0] => ) Array ( [0] => [url=url 1]ссылка 1[/url]середина текста[url=url 2]ссылка 2[/url] [1] => середина текста ) Array ( [0] => ) А начало и конец текста не захватывает почему то. |
|||
23
kokamoonga
20.02.14
✎
08:29
|
(22) "#^(.*)\[url=.*?\].*?\[/url\](.+?)\[url=.*?\].*?\[/url\](.*)$#"
|
|||
24
Ислам
20.02.14
✎
08:51
|
(23) А если в тексте будет другое количество тегов?
|
|||
25
Поpyчик-4
20.02.14
✎
08:55
|
(0) Взять phpBB2 и посмотреть как происходить парсинг bbcode [img] в includes/bbcode.php
|
|||
26
kokamoonga
20.02.14
✎
09:17
|
(24) А если бы бабушка была дедушкой? Не занимайся херней, регулярки можно и нужно использовать в связке со средствами языка. Попытки решить проблему исключительно регулярками оправданы только в случае, когда остальные способы более затратны и сложны. Здесь явно не тот случай.
|
|||
27
Asmody
20.02.14
✎
09:25
|
(4) так напиши внутри функций что-то типа
function ($matches) {return ( '<img src="' .htmlspecialchars_decode($matches[1]) . '"/>' );} |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |