我真的很困惑使用preg_replace
但慢慢学习。
我需要有关功能的帮助:
$str= preg_replace('#\W\d+#', '\W \d+', $str);
这个想法是,我正在寻找直接在它们前面没有空格的字母的数字,
即abc123。(不是“abc 123”,也不是“123abc”)
以及如何在两者之间简单地包含空格或字符,以便 abc123 变为 abc 123 或 abc@@123
谢谢大家!
我真的很困惑使用preg_replace
但慢慢学习。
我需要有关功能的帮助:
$str= preg_replace('#\W\d+#', '\W \d+', $str);
这个想法是,我正在寻找直接在它们前面没有空格的字母的数字,
即abc123。(不是“abc 123”,也不是“123abc”)
以及如何在两者之间简单地包含空格或字符,以便 abc123 变为 abc 123 或 abc@@123
谢谢大家!
你要
$str= preg_replace('#([A-Za-z]+)(\d+)#', '$1 $2', $str);
\W
没有做你认为它做的事;\w
意思是“单词字符”,\W
意思是“不是单词字符”。但是,由于您特别想要letters,因此您想要的也不想要,而 you need[A-Za-z]
是匹配所有字母的字符类。您还需要+
在它之后添加一个以匹配“一个或多个”。
括号是您如何“捕获”表达式的一部分以供以后参考;$1
并$2
参考您的括号捕获的文本。
<?php
$str = 'abc()1234';
$str= preg_replace('#([a-zA-Z()])(\d+)#', '$1 $2', $str);
echo $str;
输出:
第1234章
$1 和 $2 是反向引用,分别引用第一个和第二个捕获的组。更多信息@http ://www.regular-expressions.info/brackets.html。
您可以在在线 PHP 正则表达式测试器/([A-Za-z])(\d+)/
中看到和之间的区别。在您的情况下,两者都可以与 preg_replace 一起使用。但后者也适用于 preg_match_all,因此更加健壮。/([A-Za-z]+)(\d+)/