在不同的部分打破字符串

时间:2017-10-28 06:58:27

标签: php

如何打破不同部分的地址值?

例如:Jl。第181号工作品RT 006 RW 011 Exod。 Sukabungah Kec。 Sukajadi市万隆

是:

$address = "Jln. Suka cita No 1, RT 001 RW 002 Kota Bandung";

到:

$jln = "suka cita no 1 ";
$rt = "001";
$rw = "002";
$kota = "bandung";

2 个答案:

答案 0 :(得分:1)

RegEx是用于提取特定结构化字符串部分的工具......但是,只有你可以依赖它的预期格式。

$address = "Jln. Suka cita No 1, RT 001 RW 002 Kota Bandung";

// Match everything from the start to the first comma
preg_match('/^([^,]+),/', $address, $matches );
$jln = $matches[1];

// Match a row of digits appearing atter " RT "
preg_match('/ RT (\d+) /', $address, $matches);
$rt = $matches[1];

// Match a row of digits appearing after " RW "
preg_match('/ RW (\d+) /', $address, $matches);
$rw = $matches[1];

// Match everything from the string "Kota " to the end of line
preg_match('/Kota (.+)$/', $address, $matches );
$kota = $matches[1];

代码未经过测试,因为我正在通过手机写这个答案,但它会与此非常相似。

答案 1 :(得分:0)

如果以合适的方式构建数据库中的数据,将更容易实现此目的。尝试这样的事情。

首先,您需要将数据存储在数据库中您需要的结构中。您需要创建一个包含行的表,如下所示:

jln
rt
rw
kota

实现此目的的SQL查询将如下所示:

CREATE TABLE IF NOT EXISTS `test` (
  `jln` text NOT NULL,
  `rt` text NOT NULL,
  `rw` text NOT NULL,
  `kota` text NOT NULL
);

INSERT INTO `test` (`jln`, `rt`, `rw`, `kota`) VALUES
('suka cita no 1', '001', '002', 'bandung');

查询数据库以提取值

// Open database
$m_db = new mysqli('your_hostname', 'your_username'], 'your_password', 'your_db_name']);

// Check for errors
if ($m_db->connect_errno > 0) {
   trigger_error('Unable to connect to database [' . $m_db->connect_error . 
   ']', E_USER_ERROR); 
}

// Query the database
$result = $db->query("SELECT * FROM test");

// Check that there is a valid result
$data = array();
if ($result) {
   // Put all of the results into an array
   while ($result_row = $result->fetch_assoc()) {
      $data[] = $result_row;
   }

   // Free the database handle
   $result->free();
}

// Example code to display output for debugging
foreach ($data AS $values) {
   print_r($values);
}

这会将您的值放入数组中,如下所示:

$values[0]['jln'] = 'suka cita no 1'
$values[0]['rt'] = '001'
$values[0]['rw'] = '002'
$values[0]['kota'] = 'bandung'