PHP单词后跟一个数值

PHP单词后跟一个数值,php,string,Php,String,我有以下示例地址字符串: $address1 = "Flat 2 House Name 21 Another Road"; 如果字符串的单词Flat后跟一个数值,那么我想在数值后面加一个coma。接下来,我想看看是否还有一个数值的其他实例,如果有,在每个其他数值之前添加一个coma。因此,上述示例需要更改为: "Flat 2, House Name, 21 Another Road" 已编辑(抱歉-没有看到这应该在后续数字之前插入其他逗号) 这似乎符合你的要求 $search=arr

我有以下示例地址字符串:

$address1 = "Flat 2 House Name 21 Another Road";
如果字符串的单词Flat后跟一个数值,那么我想在数值后面加一个coma。接下来,我想看看是否还有一个数值的其他实例,如果有,在每个其他数值之前添加一个coma。因此,上述示例需要更改为:

"Flat 2, House Name, 21 Another Road"
已编辑(抱歉-没有看到这应该在后续数字之前插入其他逗号)

这似乎符合你的要求

    $search=array(
        '@(?<=flat)\s(\d+)@i',
        '@(?<!flat)\s(\d+)@i'
    );
    $replace=array( ' $1,', ', $1' );
    echo preg_replace( $search, $replace, $s );
$search=array(
“@(?编辑:



谢谢,但它并没有在每个额外的数值前加一个逗号。此外,它也没有单独查找单词Flat,所以如果我将单词放在像TheFlat一样的位置,它仍然符合上述规则,但它本身需要是平坦的。谢谢编辑,所有后续数字的逗号都需要放在与c对应的数值之前omma在数字单位值之后。可以这样做吗?@John在下面检查我的答案。事情是可能的-但是已经很晚了,我要去睡觉了。你可能想看看在preg_replace中使用数组作为模式和替换值-调整上面的值,但似乎可以将房子名称合并为房子名称。你知道它会在哪里吗哦,我算出来了,我把最后一块钱换掉了“;刚刚意识到还有另一个问题,它似乎在检查第一个数字值,然后添加一个逗号,但它需要检查单词flat是否在它之前。请提供一些示例,编辑你的帖子,如果没有单词flat?会发生什么事?我再次编辑,你让我工作,我希望至少你投赞成票;-)到目前为止,你尝试了什么?这个网站的工作方式是,你发布一些代码,解释你遇到的问题,我们试图帮助你解决这个问题。我们不是一个代码编写服务。为此,你可以访问
    $s="The Flat 2 House Name 21 Another Road";
    echo preg_replace('@(\sflat \d+|\d+)@i','$1,',$s);
    $search=array(
        '@(?<=flat)\s(\d+)@i',
        '@(?<!flat)\s(\d+)@i'
    );
    $replace=array( ' $1,', ', $1' );
    echo preg_replace( $search, $replace, $s );
 <?php

$address1 = "Fre 2 House Name 21 Another Road";

$ex = explode(' ', $address1);
$cant = 0;
$out = '';

for($i = 0; $i < count($ex); $i++) {

    if(is_numeric($ex[$i])) {
        $cant++;

            if($cant == 1 && $ex[$i - 1] == 'Flat') {
      $out .= ' ' . $ex[$i] . ', ';
  } else {
      $out = trim($out);
      $out .=  ', ' . $ex[$i] . ' ';
  }

    } else {
        $out .= $ex[$i] . ' ';
}
}

echo $out;

?>