PHP如何将包含整数的字符串分割为前后两部分?
没问题,我来帮你搞定这个地址分割的需求!你想要把包含数字的地址前缀和后面的区域城市部分拆成两段,这里给你两种符合要求的解法,分别用preg_replace和preg_split:
方法一:使用preg_split分割字符串
这个方法会把原字符串在数字后面的空格位置切开,直接得到两个部分的数组,方便你后续处理:
$address = "some address number 23 neighborhood city"; // 正向断言匹配数字后的空格,仅分割一次得到两个部分 $parts = preg_split('/(?<=\d)\s/', $address, 2); // 生成你需要的HTML结构 echo "<ol>"; echo "<li><blockquote><p>" . $parts[0] . "</p></blockquote></li>"; echo "<li><blockquote><p>" . $parts[1] . "</p></blockquote></li>"; echo "</ol>";
正则说明:(?<=\d)\s是正向后顾断言,它会匹配紧跟在数字(\d)后面的空格(\s),第三个参数2限制最多分割成2个部分,刚好满足你的需求。
方法二:使用preg_replace直接生成目标HTML
如果不需要单独处理分割后的内容,想直接生成你要的列表结构,可以用这个方法,通过正则捕获分组来替换:
$address = "some address number 23 neighborhood city"; // 捕获两个分组,替换为目标HTML格式 $result = preg_replace( '/^(.*\d)\s(.*)$/', '<ol><li><blockquote><p>$1</p></blockquote></li><li><blockquote><p>$2</p></blockquote></li></ol>', $address ); echo $result;
正则说明:
^(.*\d):捕获从字符串开头到最后一个数字的所有内容(也就是第一部分地址)\s:匹配数字后面的分隔空格(.*)$:捕获空格之后到字符串结尾的所有内容(也就是区域城市部分)- 替换时用
$1和$2分别指代两个捕获组的内容,直接生成你需要的HTML结构。
内容的提问来源于stack exchange,提问作者Daniel Iliaguev
相关产品推荐
相关产品推荐

