紀念林奕含

馬上(4月27日)就是林奕含一週年祭,正好剛剛讀完《房思琪的初年樂園》,寫下一點紀念吧。

因為看書評說簡體版翻譯的比較爛,所以就直接買了繁體版,硬是啃完了全本。在看的過程中也意識到我以前的一個誤解:寫繁體字並不是一定要把“短信”寫成“簡訊“,繁體字也如其他文字一樣只是一種文化的展現形式,只是因為她更能展示文字的來源組成,所以值得多了解。明確了這個目的,那麼就明白了該如何學習、使用繁體字了。

最早知道林奕含應該就是在去年(2017年)4、5月份間,那時她剛剛結束了自己的生命。網絡上爆出了她的故事,她也成為了英雄,一個用書當武器與壞人抗爭的英雄。

先看一個網友的讀書筆記https://foolishbits.com/當房思琪遇上李國華-2b248fbfd2e0 ,我覺得這篇深入的分析文章能夠幫助我們很快的解除一些疑惑。最核心的,許伊紋、劉亦婷、房思琪都是代表某一面的想象,都是作者林奕含性格以及願望的某一面放大的展現。

關於網友下面的這句話,我覺得他文字描述的有點歧義的(我覺得不能說郭曉奇這個角色是房思琪本人,我覺得她是一個組合體,不能純粹說是作者本人,比如關於郭曉奇父母背景的介紹明顯就不是作者本人的情況)

郭曉奇:在小說裡是一個在房思琪之前同樣是受害者的同路人,後來決定在網路上po文揭穿李國華。我猜想,這個角色大概是房思琪本人,而非曉奇,小說裡的曉奇的遭遇或許只有一小部分是真正的曉奇本人的經歷,其他部分,可能全是房思琪自己的故事。例如,曉奇的父母,與李國華、李國華老婆攤開來談判曉奇與李國華的師生戀被發現了這件事。

但是我同意他的看法,就是郭曉奇這個書中人物,不簡簡單單是作者的自己的某一面,更是將一個真實的曉奇和自己本身中和后想象出來的人物。

書中情節上沒有太多好說,這裡主要是想聊一下性和性教育的內容。

整個社會羞於談性,看來這不是大陸特有的現象。我覺得房思琪的故事給我們有兩點教訓:

  1. 父母要營造良好的家庭氛圍,要家庭成員之前彼此信任,要有愛。

在飯桌上,思琪用麵包塗奶油的口氣對媽媽說:

『我們的家教好像什麼都有,就是沒有性教育。』

媽媽詫異地看著她,回答:

『什麼性教育?性教育是給那些需要性的人。所謂教育不就是這樣嗎?』

思琪一時間明白了,在這個故事中父母將永遠缺席,他們曠課了,卻自以為是還沒開學。

家庭對性教育的缺失。

…思琪在家一面整理行李,一面用天真的口吻對媽媽說:

「聽說學校有個同學跟老師在一起。」

「誰?」

「不認識。」

「這麼小年紀就這麼騷。」

思琪不說話了。她一瞬間決定從此一輩子不說話了。

加長自己思想的極端,對孩子的不關心,使他們自己本身也成為了幫兇。

另外,關於家長是否應該早點給與小孩性教育也是一個值得探討的問題。網絡上有一句言論:“你嫌性教育太早,坏人永远不会嫌你的孩子太小”。是的,這句話很對。但是另外一方面,如果性教育太早,尺度過大,是不是也會導致小孩過早的性意識覺醒,不利於身體發育成長。

  1. 任何關於性的暴力,都是整個社會遺棄完成的。

從父母到廣大吃瓜群眾,大家在用各自不同的方式幫助施暴者。真正的幫兇不僅僅是施暴當場的協助者,也包括事後進行猜疑、中傷、侮辱等二次傷害受害者行為的吃瓜群眾。看看知乎上的這篇文章:https://zhuanlan.zhihu.com/p/26871632,大家再想想即使在平時看到的新聞下方動不動就人身攻擊的的評論,在網絡的世界里,傷害一個人太容易了。所以我們看到的,很多受害者都是在事後受不了周邊人的眼光、言論等社會壓力才選擇放棄生命的。

 

PS:

順便分享下本書中學到的兩個成語:曹衣帶水(也有稱之曹衣出水) 和 吳帶當風

書中原文是李老師說的:你現在是曹衣帶水,我就是吳帶當風。看到此處時,我覺得書中的李老師的文學功底的確很牛,突然也能理解作者的某些痛苦了,現實和幻想,自我麻醉或者清醒。

一个关于PHP正则匹配汉字的问题

起因是一个网友提了一个问题:

$pattern='/^\w+$/';
$str="人1994";
$ret = preg_match($pattern, $str, $matches);

他想着\w是应该能够匹配到中文字符“人”的,但是实际执行结果却是不能匹配。网友们给了各种解释和解决方案,总结下来有两个可行方案:

  1. 使用/u模式修饰符[1]
  2. 在pattern中使用unicode编码表示两种方案可以解决如上问题。

代码及输出如下:

<?php


$pattern='/^\w+$/';


$str="人1994";


$ret = preg_match($pattern, $str, $matches);


var_dump($ret);


var_dump($matches);





$pattern='/^\w+$/u';


$str="人1994";


$ret = preg_match($pattern, $str, $matches);


var_dump($ret);


var_dump($matches);





//From PHP 7.0


$pattern='/^\w+$/u';


$str="\u{4eba}1994";//人 =>  \u4eba


$ret = preg_match($pattern, $str, $matches);


var_dump($ret);


var_dump($matches);








Output for hhvm-3.18.5 - 3.22.0, 7.1.0 - 7.2.4


int(0)


array(0) {


}





int(1)


array(1) {


[0]=>


string(7) "人1994"


}





int(1)


array(1) {


[0]=>


string(7) "人1994"


}








Output for 5.6.0 - 5.6.30


int(0)


array(0) {


}





int(1)


array(1) {


[0]=>


string(7) "人1994"


}





int(0)


array(0) {


}





注意:第三个例子中的语法从PHP 7.0开始支持。[2] [3]

还有一个网友提出了一个观点[4]

这个不是 PHP 的锅,而是 PCRE 库的配置导致,\w 的匹配官方文档是这么说的 

A “word” character is any letter or digit or the underscore character, that is, any character which can be part of a Perl “word”. The definition of letters and digits is controlled by PCRE’s character tables, and may vary if locale-specific matching is taking place. For example, in the “fr” (French) locale, some character codes greater than 128 are used for accented letters, and these are matched by \w.

也就是说, PCRE 库的 character tables 配置会影响到\w 的匹配

目前没有验证TA所说的是否正确。

 

目前来看最好的方式就在在写pattern时使用模式修饰符/u。

 

References:

[1]https://secure.php.net/manual/zh/reference.pcre.pattern.modifiers.php

 

[2] PHP 7.0 has introduced the “Unicode codepoint escape” syntax.

https://secure.php.net/manual/en/migration70.new-features.php#migration70.new-features.unicode-codepoint-escape-syntax

 

[3] To support large Unicode ranges (ie: [\x{E000}-\x{FFFD}] or \x{10FFFFF}) you must use the modifier ‘/u’ at the end of your expression.

https://secure.php.net/manual/en/function.preg-match.php#90771

 

[4] https://www.v2ex.com/t/262150

https://stackoverflow.com/questions/1330693/validate-username-as-alphanumeric-with-underscores