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;
?>