PHP/MySQL Help Разбор/Извлечение между разделителями и идентификаторами

Я импортировал данные из SharePoint в базу данных MySQL, и мне нужно извлечь и отформатировать некоторые данные из строки, игнорируя числовые идентификаторы SharePoint между разделителями. Пример поля имени с несколькими записями в виде строки:

Smith, Bob;#5800;#Jones, Mark;#6067;#Brown, Alex

Я хочу, чтобы вывод выглядел так:

Smith, Bob</br>
Jones, Mark</br>
Brown, Alex

Мой текущий запрос работает и возвращает результаты. Текущий запрос:

<?php 
$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
if (mysql_num_rows($sql_result)>0) {
while ($row = mysql_fetch_assoc($sql_result)) {
?>
<tr>
  <td><?php echo $row["Project Title"]; ?></td>
  <td><?php echo $row["Project Description"]; ?></td>
  <td><?php echo $row["Project Sponsor(s)"]; ?></td>
</tr>
<?php } ?>

Поле, содержащее эту конкретную строку, является спонсором(ами) проекта.

Как мне анализировать эти случайные идентификаторы с помощью #; разделитель?

Помощь?


person user3542730    schedule 16.04.2014    source источник


Ответы (3)


Просто замените на <br />:

echo preg_replace('/;#?[^;]+;#?/', '<br />', $row['Project Sponsor(s)']);
person AbraCadaver    schedule 16.04.2014
comment
Это выдает предупреждение: preg_replace(): Ошибка компиляции: ничего не повторяется по смещению 0. КАК мне поступить с первым смещением? - person user3542730; 17.04.2014
comment
Это было очень, очень близко. Мне просто нужно было изменить совпадение на (;#[^;]+;#). Спасибо !!! - person user3542730; 17.04.2014

$ php -r 'print_r(explode(";#", "Smith, Bob;#5800;#Jones, Mark;#6067;#Brown, Alex"));'
Array
(
    [0] => Smith, Bob
    [1] => 5800
    [2] => Jones, Mark
    [3] => 6067
    [4] => Brown, Alex
)

Вам нужны 0, 2 и 4.

person Community    schedule 16.04.2014
comment
Спасибо ! Что помогает. Что делать, если у меня больше значений? И как мне извлечь из массива только четные значения? Я просто посмотрел на свои данные, и это всегда имя, идентификатор, имя, идентификатор и т. д. - person user3542730; 17.04.2014

Попробуйте preg_split():

Это регулярное выражение может работать или может потребоваться дополнительная настройка:

$sponsors = preg_split("/;#[0-9]+;#/", $row["Project Sponsor(s)"]);

Теперь вы можете перебирать список, форматировать имена и т.д....

person jrm    schedule 16.04.2014