允许字符串中的字符(剥离它) [英] allowed characters in a string (stripping it)
问题描述
我想要一组允许的字符,并从除了那些之外的所有内容中删除一个字符串
。
我'尝试过并试过但是每次我输入包含
unicode的字符串时,它都会发疯并输出没有意义。
我很有信心我错过了什么,但不知道是什么。
$ ACCENTED_ALL_LOW ="?*?¨??? 2?1 ????? *?3?o?¢ ?一个???'??? ¤???ˉ???????£μ±§|???????¥????????? * ??????? * ??é???" ; ;
$ ACCENTED_ALL_BIG = ????????????????????????????????????? ????????????????????????????????????一个???????一个????" ; ;
$ ACCENTED_ALL = $ ACCENTED_ALL_LOW。$ ACCENTED_ALL_BIG;
$ ALPHABET_LOW =" qwertyuiopasdfghjklzxcvbnm";
$ ALPHABET_BIG =" QWERTYUIOPASDFGHJKLZXCVBNM" ;;
$ ALPHABET_ALL = $ ALPHABET_LOW。$ ALPHABET_BIG;
$ SYMBOLS_NAME =" .''-" ;;
first时间我尝试使用这样的东西:
$ name = preg_replace(" /([a-zA-Z] | - | [$ al])| ./& quot ;,'''1' ',$ name);
(记住我做*不*知道regexp,朋友写了这行)
现在我尝试使用str_split :
函数clear_name_complex($ name,$ ok_chars){
$ ass = str_split($ ok_chars);
$ al = array() ;
foreach($ ass as $ a){
$ al [$ a] = TRUE;
}
$ s = str_split($ name);
$ ret ="" ;;
foreach($ s as $ c){
如果(!$ al [$ c])继续;
$ ret。= $ c;
}
返回$ ret;
}
仍然没有。
unicode,它发疯了,输出没有意义。
我相信这是因为在这两种情况下它都会对待unicode字符
分成单个字节,但是,我对我应该做什么不知道怎么做。
ACCENTED_ALL_LOW = QUOT;???????*¨??? 2 1 ????? * 3 O¢一???'??? ¤???ˉ???????£μ±§|???????¥????????? * ??????? * ??é???" ; ;
ACCENTED_ALL_BIG =&#; ???????????????????????????????? ? ????????????????????????????????????一个???????一个????" ; ;
ACCENTED_ALL =
I''d like to have a set of "allowed characters", and strip a string
from everything besides those.
I''ve tried and tried but so far every time I enter strings containing
unicode, it goes mad and output makes no sense.
I''m sure I''m missing something but no idea what.
$ACCENTED_ALL_LOW="?*?¨???2?1?????*?3?o?¢?a???′??? ¤???ˉ???????£?μ?±?§?|???¥?????????*???????*??é???" ;
$ACCENTED_ALL_BIG="??????????????????????????????? ????????????????????????????????????a???????a????" ;
$ACCENTED_ALL=$ACCENTED_ALL_LOW.$ACCENTED_ALL_BIG;
$ALPHABET_LOW="qwertyuiopasdfghjklzxcvbnm";
$ALPHABET_BIG="QWERTYUIOPASDFGHJKLZXCVBNM";
$ALPHABET_ALL=$ALPHABET_LOW.$ALPHABET_BIG;
$SYMBOLS_NAME=".''- ";
first time I tried using something like this:
$name=preg_replace("/([a-zA-Z]|-|[$al])|./",''$1'',$name);
(bear in mind I do *NOT* know regexp, a friend wrote this line)
now I tried instead using str_split:
function clear_name_complex ($name, $ok_chars) {
$ass=str_split($ok_chars);
$al=array();
foreach ($ass as $a) {
$al[$a]=TRUE;
}
$s=str_split($name);
$ret="";
foreach ($s as $c) {
if (!$al[$c]) continue;
$ret.=$c;
}
return $ret;
}
still nothing.
unicode, and it goes mad and output makes no sense.
I belive that''s because in both cases it treats unicode characters
splitting into single bytes, but still, I''m clueless about what am I
supposed to do.
ACCENTED_ALL_LOW="?*?¨???2?1?????*?3?o?¢?a???′??? ¤???ˉ???????£?μ?±?§?|???¥?????????*???????*??é???" ;
ACCENTED_ALL_BIG="??????????????????????????????? ????????????????????????????????????a???????a????" ;
ACCENTED_ALL=
这篇关于允许字符串中的字符(剥离它)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!