HP 過濾器 - 用于數據過濾和驗證的強大工具
示例代碼demo:
```php
<?php
// 定義一個數組,用于存儲用戶輸入的數據
$userData = array(
'name' => '<script>alert("XSS attack!");</script>',
'email' => 'test@example.com',
'age' => '25'
);
// 使用過濾器對用戶輸入的數據進行過濾和驗證
$filteredData = array(
'name' => filter_var($userData['name'], FILTER_SANITIZE_STRING),
'email' => filter_var($userData['email'], FILTER_VALIDATE_EMAIL),
'age' => filter_var($userData['age'], FILTER_VALIDATE_INT)
);
// 輸出過濾后的數據
echo "過濾后的數據:<br>";
echo "姓名:" . $filteredData['name'] . "<br>";
echo "郵箱:" . $filteredData['email'] . "<br>";
echo "年齡:" . $filteredData['age'] . "<br>";
?>
```
使用心得:
PHP 過濾器是一個非常方便和強大的工具,可以幫助我們對用戶輸入的數據進行過濾和驗證,確保數據的安全性和有效性。在開發過程中,我發現過濾器的使用非常簡單,只需要使用`filter_var()`函數,并指定相應的過濾器類型即可。過濾器類型包括`FILTER_SANITIZE_STRING`用于過濾字符串,`FILTER_VALIDATE_EMAIL`用于驗證郵箱,`FILTER_VALIDATE_INT`用于驗證整數等等。
通過使用過濾器,我可以輕松地過濾用戶輸入的數據,防止XSS攻擊和其他安全漏洞。同時,過濾器還可以驗證輸入的數據是否符合特定的格式要求,例如郵箱地址必須包含@符號,年齡必須是整數等等。這樣可以確保我們得到的數據是合法和有效的,減少了后續處理數據的麻煩和錯誤。
在開發過程中遇到的問題和解決的bug:
1. 問題:用戶輸入的姓名中包含了惡意的腳本代碼,導致頁面出現了XSS攻擊。
解決:使用`FILTER_SANITIZE_STRING`過濾器對用戶輸入的姓名進行過濾,去除其中的HTML和腳本代碼。
2. 問題:用戶輸入的郵箱地址格式不正確,無法通過后續的郵件發送驗證。
解決:使用`FILTER_VALIDATE_EMAIL`過濾器對用戶輸入的郵箱地址進行驗證,確保其符合郵箱地址的格式要求。
3. 問題:用戶輸入的年齡不是整數,無法進行后續的計算和比較。
解決:使用`FILTER_VALIDATE_INT`過濾器對用戶輸入的年齡進行驗證,確保其是一個整數。
總結:
PHP 過濾器是一個非常實用的工具,可以幫助我們過濾和驗證用戶輸入的數據。通過合理使用過濾器,我們可以提高數據的安全性和有效性,避免安全漏洞和錯誤數據的產生。在開發過程中,我們需要根據具體的需求選擇合適的過濾器類型,并注意處理可能出現的問題和bug,以確保代碼的穩定性和安全性。
(注:以上內容為筆記,非官方文檔)
i,你好呀,我是May。
今天繼續跟大家分享游戲本地化常見的源文檔,PO文件~
(其實之前寫過一篇簡單的,這次更新為新內容~)
在進行游戲和應用程序本地化時,我們最常見的文檔是多語言Excel文檔,詳見。
此外,還有一種常見的語言包文檔,就是PO文件。
比如我在電腦一搜,就找到很多語言包的PO文檔,如剪映云的PO文件。
所以今天分享:如何翻譯多語言的PO文檔。
PO是portable object (可跨平臺對象)的縮寫,可以被Java程序、GNU gettext或其他軟件程序作為屬性文件引用,是應用程序本地化時常見的文檔。
我的觀點還是:我們本地化人員不是程序員,不需要會寫,只要認識就行!
我們來以一個demo文檔認識一下,什么是PO文檔:
這里的例子我就用我下載好的剪映云自帶的PO文檔做案例了,如有侵權,聯系修改~
PO文件的數據結構長這樣。其中:
# 井號后面一般是注釋;
msgid ""——msgid空格引號,引號內是原文;
msgstr ""——msgstr空格引號,引號內是原文翻譯結束后的譯文的內容。
根據編程語言不同,原文可能會含有HTML樣式或其它占位符,翻譯時必須保留這些字符串。
既然是注釋,也注釋的類型怎么區分呢?在PO中,具體的注釋類型由緊隨井號的字符決定,比如:
#—— 井號后面緊跟空格,是譯員的注釋;
#.——井號后面緊跟緊跟句點,是額外注釋,一般是從源代碼注釋生成;
#:—— 井號后面緊跟冒號,表明待翻譯語句的出處,一般標記源代碼文件及行數;
#,—— 井號后面緊跟逗號,一般是由編譯器生成的格式注釋。
有時,同一個句子在不同的場景里要翻譯成不同的意思。所以為了區分上下文的場景,在PO文件中也會通過 msgctxt 字段,來明確句子在程序中的具體位置和含義。
對于有單復數的語言而言,PO支持設置單復數區分。
CCJK(簡中繁中日韓)是沒有單復數的,就不行~
那,這樣的文件如何翻譯呢?
memoQ支持直接導入PO文件。
對于含有占位符或HTML樣式的文檔,還可以借助層疊過濾器實現。
層疊層疊嘛,第一層是PO gettext(也就是PO)過濾器,第二層是HTML過濾器,也可以再加一層正則表達式標注器。
直接將文件導入至項目即可。
如果原文中有想<color=yellow>和{PropName}或者 \n 這樣的字符串和非譯元素,需要再加一層正則表達式標注器,并設置正則定義方式。
——這樣的話原文中的非譯元素可以固定為標簽,譯員就不會誤翻譯。
Step 1:在導入項目時,使用“選擇性導入”;
Step 2:選擇好原文后,默認用的過濾器是PO gettext過濾器。因為原文有字符串,這里選擇“更改過濾器和配置”;
Step 3:添加一層正則表達式標注器,并設置正則定義方式;
Step 4:設置完成過濾器,保存層疊過濾器,以供下次使用。然后,點擊“確定”即可。
我寫過一篇應用程序本地化中常用字符串和正則表達式推薦,你可以來學習正則。
當然,memoQ自帶了一個tags and entities的標注器,內嵌了像 <color>這樣的標簽,也設置了哪些是開標簽哪些是關閉標簽,你也可以直接使用,還是不錯的。
導入完成文檔后,即可在memoQ中進行翻譯了。
在翻譯過程中,你會發現:
msgid中的原文就提取出來了,可以安心做翻譯;
下方還可以預覽原文和譯文。
翻譯結束后,導出就OK啦。
導出譯文的操作可以參考。
這里用了機器翻譯的結果。
好啦,希望你上內容可以幫到你,有用可收藏~
特別說明:本文僅用于學術交流,如有侵權請后臺聯系小編刪除。
- END -
轉載來源:職業譯員玩轉翻譯技術
轉載編輯:李倩楠
條件渲染
1、v-if、v-else-if與v-else,寫法:v-if="表達式" ,不展示的DOM元素進行了移除,要求結構不能被“打斷”,適用于切換頻率較低的場景。
2、v-show,寫法:v-show="表達式",不展示的DOM元素沒有移除使用了樣式進行隱藏,適用于切換頻率較高的場景。
列表渲染
1、v-for,寫法:v-for="(item, index) in XXX" :key="YYY",可遍歷:數組、對象、字符串、指定次數;
2、遍歷數組:v-for / index;遍歷對象:v-for / key。
3、key的作用,key是虛擬DOM對象的標識,當數據發生變化時,會根據新數據生成新的虛擬DOM,新虛擬DOM與舊虛擬DOM差異比較,而后渲染到頁面。
4、DIFF算法,DIFF是廣泛的概念,如git的diff,js對象diff等,兩棵樹做diff,即虛擬DOM中的diff算法。
5、diff算法的必要性:渲染真實DOM的開銷是很大的,輕微的操作都可能導致頁面重新排版,非常耗性能,相對于DOM對象,js對象處理起來更快,而且更簡單,通過diff算法對比新舊vdom之間的差異,可以批量的、最小化的執行dom操作,從而提高性能。
操作表單數據
過濾器
*請認真填寫需求信息,我們會在24小時內與您取得聯系。