我正在清理删除此数组中字符串的字符串:
$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 alfabarra”,有可能吗?感谢
答案 0 :(得分:5)
这假设您的所有字符串都没有/
。如果是,请以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);
答案 1 :(得分:1)
在未能提出全面的正则表达式解决方案后,以下内容可能会有用:
$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);
在基于正则表达式的解决方案中,使用单词边界来解决一些复杂问题。
答案 2 :(得分:0)
试试这个:
for($i=0; $i<$regex('count'); $i++){
foreach($regex[$i] as $key) {
if ( is_string($key) ) {
$twit = str_replace($regex[$i],'', $twit);
}
}
}