2015-07-03 7 views
0

У меня есть следующая проблема: Я импортирую динамическую динамику WKT из базы данных в WKT Wicket Javascript library. Я должен сделать некоторые замены, чтобы правильно подогнать WKT. Поскольку mysql извлекает WKT AsText (SHAPE), я получаю несколько массивов, например. POLYGON ((xxxx)), POLYGON ((yyyy)) и так далее. Во-первых, я должен был удалить все «ПОЛИГОН» делаетPHP: удалить последнюю запятую из multipolygon

$str = preg_replace('/^POLYGON/', '', $WKT[1]); 

и добавьте MultiPolygon перед тем <?php

тег в калитку. Оно работает. Во-вторых, я должен добавить запятую между полигонами, preicisely между ")) ((" скобки:

$str2 = str_replace(array('((', '))'), array('((', ')),'), $str);  

Это работает, но последняя запятая остается то, что "немного" деформирует мой MultiPolygon: MultiPolygon ((ххх)), ((ий)), ((ZZZ)),

Как я могу удалить последнюю запятую?

Я был бы благодарен за каждое регулярное выражение или каким-либо другое решение, которое может решить мою проблему.

+0

'str_replace()'. используйте это значение –

+2

Используйте '$ str2 = rtrim ($ str2,", ")' после того, как вы сделали 'str_replace', Посмотрите [здесь] (http://php.net/rtrim). – DavidDomain

+0

Я пробовал preg_replace, rtrim, различные regexes но. он всегда удаляет все запятые. – Miroslav

ответ

1

В любой строке , вы можете удалить последний X, если вы что нет X. Итак, вы можете использовать отрицательный результат: (,)(?!.*,), как видно here и заменить его пустой строкой.

$result = preg_replace('/(,)(?!.*,)/', '', $str)

Это не выглядит в контексте, хотя, это будет просто удалить последнюю запятую любой строки, независимо от того, где он находится.

-1

Благодарим вас обоих - ваши ответы были правильными и очень полезными.

Проблема не в замене струны. Это было больше данных, извлекаемых из БД. Mysqli_fetch_array и mysqli_fetch_assoc возвращают stringstringring или arrayarrayarray для 3 строк. Вот почему все запятые были заменены.

Я изменил на mysqli_fetch_all, затем выполнил незначительные замены для каждой строки (в виде массива) и ввел в себя каждую переменную. После того, как я объединил их в одну переменную, я мог бы применить ваши решения. Это не очень сложное решение, но если оно упаковано в функцию, все будет хорошо.

($WKT = mysqli_fetch_all($result)) { 
$str = preg_replace('/POLYGON/', '', $WKT[0]); 
$str1 = preg_replace('/POLYGON/', '', $WKT[1]); 
$str2 = preg_replace('/POLYGON/', '', $WKT[2]); 
$str3 = implode($str); 
$str4 = implode($str1); 
$str5 = implode($str2); 
$str6 = $str3 . $str4 . $str5; 
$str7 = preg_replace('/\)\)/', ')),', $str6); 
$str8 = rtrim($str7, ","); 
echo $str8; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^