PHP:删除多面体的最后一个逗号

PHP: remove last comma of a multipolygon

我有以下问题: 我将 WKT dynamicaly 从 DB 导入 WKT Wicket Javascript 库。我必须做一些替换以正确适应 WKT。由于 mysql 获取 WKT AsText(SHAPE) 我收到了几个数组,例如POLYGON((xxxx)),POLYGON((yyyy)) 等等。 首先,我必须删除所有 "POLYGON" 做

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

并在 <?php

之前添加 MULTIPOLYGON

检票口中的标签。有用。 其次,我必须在多边形之间添加逗号,精确地在“))((”方括号:

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

它有效,但最后一个逗号仍然是 "slightly" 使我的多边形变形: 多边形((xxx)),((yyy)),((zzz)),

如何删除最后一个逗号?

如果有任何正则表达式或其他解决方案可以解决我的问题,我将不胜感激。

在任何字符串中,如果您确定后面没有 X,则可以删除最后一个 X。因此,您可以使用否定前瞻:(,)(?!.*,),如 here 所示,并将其替换为空字符串。

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

虽然这不会查看上下文,但它只会删除任何字符串的最后一个逗号,无论它在哪里。

谢谢你们 - 你们的回答是正确的并且很有帮助。

问题不是字符串替换。更多的是从数据库中获取数据。 Mysqli_fetch_array 和 mysqli_fetch_assoc return stringstringsring 或 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;
}