尝试让我的preg_replace语句工作,除了一些变化之外,它在很大程度上都有效。
<?php
$string = "10vdc";
if (preg_match("/(^[0-9]+[0-9])+[v | a]/i",$string)) {
echo "yes!";
$string = preg_replace("/^[0-9]+[0-9]/","$0 ",$string);
}
if (preg_match("/[v | a][ac | dc]/i",$string)) {
echo "<br>yes2!";
$string = preg_replace("/([\d | \s][v | a])([ac|dc])/i","$1 $2",$string);
}
echo "<br>";
echo $string;
?>
如果我的字符串是10vdc,10 vdc,10vac或10 vac我的正则表达式工作(它应分别打印10 v dc或10 v ac)但如果我的字符串是10adc,10 adc,10aac或10 aac我的回声分别只返回10个adc或10个aac。我整个上午一直在研究教程,我开始掌握这个问题,但这让我很难受!
显然,如果您想尝试一下,只需更改$ string值。
感谢您的帮助!你是最好的。
答案 0 :(得分:0)
我发现了我的问题。它与or(|
)指示符之后的空格有关。
那是什么:
/([\d | \s][v | a])([ac|dc])/i
应为:
/([\d|\s][v|a])([ac|dc])/i
。