我想删除包含--
和~
这里是代码:
function removeUnusedLines($string){
if (strpos($string,'--') > 0 || strpos($string,'~') > 0 ) {
$string = preg_replace( "/\r|\n/", "", $string );
return $string;
}
}
$file = "C:/AppServ/www/kbbi/try.txt";
$lines = file($file);
foreach ($lines as $line){
$remove = removeUnusedLines($line);
echo $remove.'<br>';
}
示例:
Poetry is a form of literature ~ that uses aesthetic and rhythmic
qualities of language —- such as phonaesthetics, sound symbolism
metre to evoke meanings in addition to, or in place of, the prosaic ostensible meaning
从示例中,我想得到最后一行,因为第一行和第二行包含~
和--
但它不会删除该行。请帮帮我,谢谢你:)。
答案 0 :(得分:1)
您正在寻找preg_grep
:
$lines = preg_grep('/--|~/', file($file), PREG_GREP_INVERT);
答案 1 :(得分:0)
与你的sintax一起,你不会抓住以 - 和〜
开头的字符串返回针存在于相对于haystack字符串开头的位置(与offset无关)。另请注意,字符串位置从0开始,而不是1 如果未找到针,则返回 FALSE 。
function removeUnusedLines($string){
if (strpos($string,'--') === FALSE && strpos($string,'~') === FALSE ) {
$string = preg_replace( "/\r|\n/", "", $string );
return $string;
}
}
你必须恢复条件:)如果没有找到则返回字符串。
答案 2 :(得分:0)
你可以使用preg_replace:
$string = preg_replace( '/.*(--|~).*[\r]?[\n]?/', '', $string);
因此,它会在一行.*
上查找所有内容,然后是--
或~
,然后是该行.*
上的所有内容。可选地后面是回车\r
和/或新行\n
。