|
|
|
| ситуация такая. в добавляемом сообщении на форум имеется несколько ссылок. Собираю эти ссылки в массив, через preg_match_all. После некоторых вычислений каждый элемент массива получает свой уникальный порядковый номер, например первая найденная ссылка получает 1067, следующаю 1068 и т.д. как в исходном тексте заменить ссылки на присвоенные им номера.
Т.е. Если в тексте пять ссылок, то первое вхождение заменить на 1067, второе на 1068, ... последнее на 1071. Количество номеров в массиве всегда равно количеству вхождений которые требуется заменить. | |
|
|
|
|
|
|
|
для: Рома
(26.02.2010 в 17:04)
| | А вы не могли бы привести пример текста с ссылками и пример массива? | |
|
|
|
|
|
|
|
для: cheops
(26.02.2010 в 17:24)
| | <?php
// обрабатываемый текст
$post = 'текст сообщения Описание ссылки 1 еще текст сообщения текст сообщения
Описание ссылки 2 еще текст сообщения еще текст сообщения еще текст сообщения
Описание ссылки 3';
// так вычисляю количество ссылок
preg_match_all("#\[url[\s]*=[\s]*((?=http://)[\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#is", $post, $arr_link);
// дальнейшие мои вычисления возвращают массив, равный количеству ссылок в тексте
// например такой
$my_array = array('1321', '1322', '1323',);
// хочу получить
$result_post = 'текст сообщения link_1321 еще текст сообщения текст сообщения
link_1322 еще текст сообщения еще текст сообщения еще текст сообщения
link_1323';
?>
кодировка utf8 | |
|
|
|
|
|
|
|
для: Рома
(26.02.2010 в 17:54)
| | да тут все просто оказалось, я же получил массив вхождений, подходящих под регулярное выражение. их можно заменить на что угодно. очередная тема открытая зря. | |
|
|
|
|
автор: .heed (26.02.2010 в 17:37) |
|
|
для: Рома
(26.02.2010 в 17:04)
| | всмысле
0=>первая ссылка
1=>вторая
0=>третья ??
$txt = str_replace(array_values($array), array_keys($array), $txt);
иногда можно делать без всяких таких манипуляций preg_replace_callback() , со всеми нужными действиями внутри callback-функции
Но так вся обработка внутри , при каждом нахождении, и доступны только полученые ранее результаты | |
|
|
|
|
|
|
|
для: .heed
(26.02.2010 в 17:37)
| | именно так и поступил. | |
|
|
|