浏览代码

Fix PHP7 code

Mark Scherer 9 年之前
父节点
当前提交
f938c09204
共有 2 个文件被更改,包括 15 次插入8 次删除
  1. 5 3
      Test/Case/View/Helper/FormatHelperTest.php
  2. 10 5
      View/Helper/FormatHelper.php

+ 5 - 3
Test/Case/View/Helper/FormatHelperTest.php

@@ -499,14 +499,16 @@ class FormatHelperTest extends MyCakeTestCase {
 			'122 jsdf ficken Sjdkf sdfj sdf' => '122 jsdf ###### Sjdkf sdfj sdf',
 			'122 jsdf ficken Sjdkf sdfj sdf' => '122 jsdf ###### Sjdkf sdfj sdf',
 			'122 jsdf FICKEN sjdkf sdfjs sdf' => '122 jsdf ###### sjdkf sdfjs sdf',
 			'122 jsdf FICKEN sjdkf sdfjs sdf' => '122 jsdf ###### sjdkf sdfjs sdf',
 			'dddddddddd ARSCH ddddddddddddd' => 'dddddddddd ##### ddddddddddddd',
 			'dddddddddd ARSCH ddddddddddddd' => 'dddddddddd ##### ddddddddddddd',
-			//'\';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">\'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>' => null
 		];
 		];
 		foreach ($data as $value => $expected) {
 		foreach ($data as $value => $expected) {
 			$res = $this->Format->wordCensor($value, ['Arsch', 'Ficken', 'Bitch']);
 			$res = $this->Format->wordCensor($value, ['Arsch', 'Ficken', 'Bitch']);
-
-			//debug('\''.h($value).'\' becomes \''.h($res).'\'', null, false);
 			$this->assertEquals($expected === null ? $value : $expected, $res);
 			$this->assertEquals($expected === null ? $value : $expected, $res);
 		}
 		}
+		
+		$input = 'dfssdfsdj sdkfj sdkfj ksdfj bitch ksdfj';
+		$result = $this->Format->wordCensor($input, ['Bitch'], '***');
+		$expected = 'dfssdfsdj sdkfj sdkfj ksdfj *** ksdfj';
+		$this->assertEquals($expected, $result);
 	}
 	}
 
 
 	/**
 	/**

+ 10 - 5
View/Helper/FormatHelper.php

@@ -1243,9 +1243,9 @@ class FormatHelper extends TextHelper {
 	 *
 	 *
 	 * @todo Move to Text Helper etc.
 	 * @todo Move to Text Helper etc.
 	 *
 	 *
-	 * @param string	the text string
-	 * @param string	the array of censoered words
-	 * @param string	the optional replacement value
+	 * @param string $str The text string
+	 * @param string $censored The array of censoered words
+	 * @param string|null $replacement The optional replacement value
 	 * @return string
 	 * @return string
 	 */
 	 */
 	public function wordCensor($str, $censored, $replacement = null) {
 	public function wordCensor($str, $censored, $replacement = null) {
@@ -1264,8 +1264,13 @@ class FormatHelper extends TextHelper {
 			if ($replacement !== null) {
 			if ($replacement !== null) {
 				$str = preg_replace("/({$delim})(" . str_replace('\*', '\w*?', preg_quote($badword, '/')) . ")({$delim})/i", "\\1{$replacement}\\3", $str);
 				$str = preg_replace("/({$delim})(" . str_replace('\*', '\w*?', preg_quote($badword, '/')) . ")({$delim})/i", "\\1{$replacement}\\3", $str);
 			} else {
 			} else {
-				$str = preg_replace("/({$delim})(" . str_replace('\*', '\w*?', preg_quote($badword, '/')) . ")({$delim})/ie", "'\\1'.str_repeat('#', strlen('\\2')).'\\3'",
-					$str);
+				$str = preg_replace_callback(
+					"/({$delim})(" . str_replace('\*', '\w*?', preg_quote($badword, '/')) . ")({$delim})/i",
+					function ($x) {
+						return $x[1] . str_repeat('#', strlen($x[2])) . $x[3];
+					},
+					$str
+				);
 			}
 			}
 		}
 		}