我需要一个PHP和JavaScript函数,它会在标题中添加括号。但如果标题中包含带括号的单词,则年份和单词应共享括号,用“/".
分隔foo("Ferrari (ABC)", 2016); // Ferrari (2016/ABC)
foo("Ferrari", 1979); // Ferrari (1979)
foo("X(Y)Z (PQR)", 1987); // X(Y)Z (1987/PQR)
目前,我检查一个模式,如果匹配则替换,如果不匹配则执行其他操作。这个功能可以简化为更简单(最好是单个)的操作吗?请提供一个完整的例子。
PHP:
function foo($title, $year) {
$pattern = "/(\()([A-Z]+\))$/";
if(preg_match($pattern, $title))
$title = preg_replace($pattern, "${1}".$year."/${2}", $title);
else
$title = "$title ($year)";
}
JavaScript的:
function foo(title, year) {
var pattern = /(\()([A-Z]+\))$/;
if(pattern.test(title))
title = title.replace(pattern, "$1"+year+"/$2");
else
title = title + " (" + year + ")";
}
答案 0 :(得分:0)
是的,有一个更简单的方法。
1-检查$ title中是否有括号
如果为TRUE,则只需使用函数str_replace进行简单搜索/替换。搜索"("
替换为"($yaer/"
这只会将年份和斜线添加到您准备好的字符串中。
2-如果你没有括号,那么只需$title = "$title ($year)";
function foo($title, $year) {
if ( strpos($title,"(") > 1 )
$title = str_replace("(","($year/",$title);
else
$title = "$title ($year)";
}
Javascript的逻辑相同
答案 1 :(得分:0)
可以说,使用替换会更容易一些。
<强> PHP 强>
FCC_DATE=`sqlplus -silent "$USER_NAME"/\"$SCHEMA_PASSWD"@"$SID"<<ENDSQL`
<强>的JavaScript 强>
<?php
function foo($title, $year) {
if (substr($title,-1) == ")") {
return str_replace(")","/".$year.")",$title);
} else {
return $title . " (" . $year . ")";
}
}
echo foo("My Title (ABC)", 1996);
echo "<br />";
echo foo("My Title", 1996);
?>
答案 2 :(得分:0)
在Javascript中使用RegExp的示例:
function foo(str, year) {
var re = /(\(([A-Z]+)\))?$/
return str.replace(re, function(b, b, found) {
if (found)
return '(' + year + '/' + found + ')';
else
return ' ' + year;
})
}