我找到了以下解决方案:here 但是它使用的是javascript,我尝试使用PHP进行操作,但收到警告。
这是我的代码:
$dynamicstring = 'שָׁמַיִם';
$newstring2 = preg_replace('[\u0591-\u05C7]', '', $dynamicstring);
我得到的警告:
Warning: preg_replace(): Compilation failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 in
是什么意思?所以如果它不支持我该怎么用?
编辑: 我可以通过以下代码来做到这一点:
preg_replace('/[^\w$\x-\x]+/u', '', $dynamicstring);
但是这段代码删除了字符串中单词之间的空格,如何解决?
第二次修改: 解决方案是这样做:
preg_replace('/[^\w$\x-s-\x]+/u', '', $dynamicstring);
我在-s-
个之间添加了\x
答案 0 :(得分:0)
这些是非空格标记,因此(假设字符串在UTF-8中)可以使用Unicode character property语法进行剥离:
<?php
$dynamicstring = 'שָׁמַיִם';
$newstring2 = preg_replace('/\p{Mn}/u', '', $dynamicstring);
var_dump($newstring2); // results in string(8) "שמים"