允许字符串中的字符(剥离它) [英] allowed characters in a string (stripping it)

查看:85
本文介绍了允许字符串中的字符(剥离它)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要一组允许的字符,并从除了那些之外的所有内容中删除一个字符串




我'尝试过并试过但是每次我输入包含

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆