我通过删除此数组中找到的字符串来清理字符串:
$regex = array("subida", " de"," do", " da", "em", " na", " no", "blitz");
这是我正在使用的
str_replace()
:
for ($i = 0;$i < 8; $i++){
$twit = str_replace($regex[$i], '', $twit);
}
如何让它仅删除一个单词(如果它正是字符串中的单词),我的意思是,我有以下短语:
#blitz na subida do alfabarra blitz
它会返回我:
# alfabarra
我不想删除第一个
blitz
,因为它前面有一个散列(#
),我希望它输出:
#blitz alfabarra
这假设您的字符串中没有
/
。如果是这样,请使用 preg_quote()
作为第二个参数显式运行 /
。
它还假设您想要匹配单词,所以我修剪了每个单词。
$words = array("subida", " de"," do", " da", "em", " na", " no", "blitz");
$words = array_map('trim', $words);
$words = array_map('preg_quote', $words);
$str = preg_replace('/\b[^#](?:' . implode('|', $words) . ')\b/', '', $str);
键盘。
在未能提出包罗万象的正则表达式解决方案后,以下内容可能有用:
$words = array("subida", " de", " do", " da", "em", " na", " no", "blitz");
$words = array_map('trim', $words);
$str = '#blitz *blitz ablitz na subida do alfabarra blitz# blitz blitza';
$str_words = explode(' ', $str);
$str_words = array_diff($str_words, $words);
$str = implode(' ', $str_words);
var_dump($str);
解决了基于正则表达式的解决方案中字边界的一些复杂问题。
试试这个:
for($i=0; $i<$regex('count'); $i++){
foreach($regex[$i] as $key) {
if ( is_string($key) ) {
$twit = str_replace($regex[$i],'', $twit);
}
}
}