我有一個當前項目的模板系統。我使用str_replace()用動態數據替換HTML文檔中的標記。str_replace()有搜索限制嗎?
例如,{%TEAM_NAME%}將由取決於特定因素的表中取得的團隊名稱替換。
在一種情況下,令牌的數量(或搜索參數的字符串長度)似乎變得如此之久以至於它不再被替換。
下面是摘錄顯示什麼我指的是:
$tokens = array('{%T_ID%}','{%NAV_BAR%}','{%TEAM_NAMES%}','{%CLUB_NAME%}','{%TEAM_NAME%}','{%STATE%}', '{%AGE_GROUP%}','{%LEVEL%}','{%CONTACT_NAME%}','{%CONTACT_ADDRESS%}','{%CONTACT_CITY%}','{%CONTACT_ZIP%}','{%CONTACT_EMAIL%}','{%CONTACT_PHONE_NUM%}','{%COACH_NAME%}','{%COACH_EMAIL%}','{%COACH_PHONE_NUM%}','{%SECRET_Q%}','{%SECRET_A%}','{%SO_CAL_ID%}','{%STATE_ID%}','{%NUM_PLAYERS%}','{%NOTES%}','{%SCORE_W%}','{%SCORE_L%}','{%SCORE_T%}','{%SCORE_GF%}','{%SCORE_GA%}','{%SCORE_GD%}','{%SCORE_POINTS%}');
$replace = array(
$tId => null,
$navBar->Parse() => null,
$teamNameOptions => null,
_CLUB_NAME_ => _TEAM_TABLE_,
_TEAM_NAME_ => _TEAM_TABLE_,
_STATE_ => _TEAM_TABLE_,
$ageOptions => null,
$levelOptions => null,
_CONTACT_NAME_ => _TEAM_TABLE_,
_CONTACT_ADDRESS_ => _TEAM_TABLE_,
_CITY_ => _TEAM_TABLE_,
_ZIP_ => _TEAM_TABLE_,
_CONTACT_EMAIL_ => _TEAM_TABLE_,
_CONTACT_PHONE_NUM_ => _TEAM_TABLE_,
_COACH_NAME_ => _TEAM_TABLE_,
_COACH_EMAIL_ => _TEAM_TABLE_,
_COACH_PHONE_NUM_ => _TEAM_TABLE_,
_SECRET_Q_ => _TEAM_TABLE_,
_SECRET_A_ => _TEAM_TABLE_,
_SO_CAL_ID_ => _TEAM_TABLE_,
_STATE_ID_ => _TEAM_TABLE_,
_NUM_PLAYERS_ => _TEAM_TABLE_,
_NOTES_ => _TEAM_TABLE_,
_SCORE_W_ => _TEAM_TABLE_,
_SCORE_L_ => _TEAM_TABLE_,
_SCORE_T_ => _TEAM_TABLE_,
_SCORE_GF_ => _TEAM_TABLE_,
_SCORE_GA_ => _TEAM_TABLE_,
_SCORE_POINTS_ => _TEAM_TABLE_
);
做一些廣泛的白箱測試值都在那裏,但是最後令牌和更換{%SCORE_POINTS%}不被替換爲一個數字應該是,而不是空的。
此:
<input type="text" name="fScorePoints" value="{%SCORE_POINTS%}">
應該改爲:
<input type="text" name="fScorePoints" value="5">
但實際上就變成了:
<input type="text" name="fScorePoints" value="">
我加入另一個標記和更換,並且也進一步測試不正確更換,導致我認爲有某種形式的字符限制?
我可以確認所有其他標記和替換工作完全正常,只是不是最後一個。
發生了什麼事?
感謝您的任何見解。
你有30個代幣,只有29個代替。這就是爲什麼最後一直是空白的原因。 – Jeremy 2012-08-09 20:05:17
你說得對,我忘了更新{%SCORE_GD%}的刪除謝謝。 – Lee 2012-08-09 20:06:57
如果您已解決問題,請將其作爲答案發布並接受。 – 2012-08-09 20:11:38