【问题标题】:How to search and extract a string from a string in PHP?如何从 PHP 中的字符串中搜索和提取字符串?
【发布时间】:2019-06-19 14:10:34
【问题描述】:

我有一个字符串变量,其中包含许多信息,例如地址、名称等。 但是,如何在 PHP 中单独提取这些信息,以便将其插入数据库?例如:

$string = 'Address : 123 Street Name : John';

我预料到:

$name = 'John';
$address = '123 Street';

【问题讨论】:

  • 请向我们展示一个可能包含此信息的较大字符串。有一些你没有解决的极端情况。
  • 这是一个真的 sh*tty“数据格式”,所以请首先适当地给提出这个问题的人一巴掌:-)唯一的方法可以成功解析开始,如果所有键都是单个单词,其中没有任何空格(或者都是预先知道的) - 否则,无法通过给定示例确定此处是否应该是Address: 123 StreetName: John,或者可能是Address: 123Street Name: John
  • 您有不同的选择,这取决于您是否提前知道要提取的密钥。一些线索是使用正则表达式,substrexplode.. 但在你的情况下,如果你不知道密钥,那就很难了,正如 04FS 指出的那样

标签: php string variables search


【解决方案1】:

您应该使用preg_match 函数将您需要的信息匹配到使用正则表达式的单独捕获组中。

对于您的示例变量,我们可以这样做:

preg_match('/Address\s\:\s(.*)\sName\s\:\s(.*)/', $string, $matches);

现在,$matches 变量中将存储这些数据:

array (
  0 => 'Address : 123 Street Name : John',
  1 => '123 Street',
  2 => 'John',
)

数组的第一项是整个正则表达式的全局捕获。下一项存储手动捕获的数据。

然后,创建你的变量:

$address = $matches[1];
$name = $matches[2];

【讨论】:

  • 打败了我(尽管我主张单独处理正则表达式
  • 我想知道你为什么为第二个捕获组添加条件?..
  • @Kaddath 谢谢,这只是错误。不影响当前结果
猜你喜欢
  • 2012-07-23
  • 2014-06-24
  • 1970-01-01
  • 2016-11-05
  • 2012-03-03
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多