使用php

时间:2018-09-05 04:56:56

标签: php

我找到了以下解决方案: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

1 个答案:

答案 0 :(得分:0)

这些是非空格标记,因此(假设字符串在UTF-8中)可以使用Unicode character property语法进行剥离:

<?php

$dynamicstring = 'שָׁמַיִם';
$newstring2 = preg_replace('/\p{Mn}/u', '', $dynamicstring);
var_dump($newstring2); // results in string(8) "שמים"

演示:https://ideone.com/KpsZM3