我正在尝试编写一个正则表达式,允许在数字和字符之间使用连字符符号( - )但删除字符之间的连字符符号并将其替换为PHP字符串中的空格。我是正则表达式的初学者,不知道如何编写正则表达式,这可以任何一个帮助
这里我需要的是我在PHP中有这样的字符串
$string ="Al-Abbas - Manama - 100" or
$string ="100 - Al-Abbas - Manama"
应用正则表达式后我需要的输出必须像
Al Abbas Manama - 100
100 - Al Abbas Manama
任何其他方式请帮助
答案 0 :(得分:1)
您可以使用此正则表达式:
$string ="Al-Abbas - Manama - 100"
$repl = preg_replace('/\d\h*-\h*(*SKIP)(*F)|-(?!\h*\d)/', ' ', $string);
\d\h*-\h*(*SKIP)(*F)
将失败
如果连字符旁边有数字,(?!\h*\d)
将无法断言答案 1 :(得分:0)
您可以使用纯PHP:
$string1 ="Al-Abbas - Manama - 100";
$string2 ="100 - Al-Abbas - Manama";
function convertString($string) {
$strArr = explode("-", $string);
$new = '';
foreach ($strArr AS $key => $val) {
$val = trim($val);
if (is_numeric($val)) {
if ($key === 0) $new .= $val . " - ";
else $new .= " - " . $val;
} else {
$new .= " " . $val;
}
}
return $new;
}
echo convertString($string1); //output: Al Abbas Manama - 100
echo convertString($string2); //output: 100 - Al Abbas Manama