[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разбиение строк по регулярному выражению
Aizen
Имеется вот такой код
if ( $value[6] AND !empty( $xfieldsdata[$value[0]] ) ) {
$temp_array = explode( ",", $xfieldsdata[$value[0]] );
$value3 = array();

foreach ($temp_array as $value2) {

$value2 = trim($value2);
$value2 = str_replace("'", "'", $value2);

if( $config['allow_alt_url'] == "yes" ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";
else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&xf=" . urlencode( $value2 ) . "\">" . $value2 . "</a>";
}

$xfieldsdata[$value[0]] = implode(", ", $value3);

unset($temp_array);
unset($value2);
unset($value3);

}


Он слова разделенные запятыми преобразует в ссылки
Разделителем служит запятая
Я пытаюсь добавить дополнительно как разделители знаки ";" и "&"

Заменил $temp_array = explode( ",", $xfieldsdata[$value[0]] ); на $temp_array = preg_split("/[,|;|&]/", $xfieldsdata[$value[0]]);
Строчка работает корректно, но вот вместо любого знака на сайте выводится запятая.
Я так понимаю это из за этой строчки
$xfieldsdata[$value[0]] = implode(", ", $value3);
Так как в конечном массиве не остаётся информации о том, какой разделитель там был. implode не может определить, где какой разделитель применять.

Один человек подсказал что необходимо использовать PREG_SPLIT_OFFSET_CAPTURE то есть
$temp_array = preg_split("/[,|;|!]/", $xfieldsdata[$value[0]], -1, PREG_SPLIT_OFFSET_CAPTURE);
затем использовать цикл и значение полученное с помощью флага

Подскажите пожалуйста как это правильно сделать в этом коде?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.