php 没有特殊字符的文件搜索
php file search without special characters
我正在尝试使用以下代码执行 php 搜索:
$search = &q;
$lines = file('file.txt');
// Store true when the text is found
$found = false;
foreach($lines as $line)
{
if(strpos($line, $search) !== false)
{
$found = true;
echo $line;
}
}
// If the text was not found, show a message
if(!$found)
{
echo '';
它搜索每个字符,returns 有时没有结果。我想设置此代码的样式以仅搜索字母和数字,但不包含任何特殊字符,包括点和逗号。我该怎么做?
谢谢。
基本:
// $search contains query
// remove non-alphanumeric characters from search query
$search = preg_replace('[^a-zA-Z\d\s:]','',$search);
// Get unfiltered file into an array
$original_lines = file('file.txt');
$num_matches = 0;
foreach ($original_lines as $line) {
if(strpos(preg_replace('[^a-zA-Z\d\s:]','',$line), $search) !== false){
$num_matches++;
echo $line;
}
}
if (!$num_matches){
echo "No matches.";
}
实验性的,可能内存和处理效率低下:
// $search contains query
// remove non-alphanumeric characters from search query
$search = preg_replace('[^a-zA-Z\d\s:]','',$search);
// Get unfiltered file into an array
$original_lines = file('file.txt');
// Read entire file to string, filtering non-alphanumeric characters
$filtered_lines = preg_replace('[^a-zA-Z\d\s:]','',implode("\n",$original_lines);
// Count the matches
if ($num_matches = preg_match_all($search,$filtered_lines,$matches)){
// Convert back to array with replacements
$filtered_lines = explode('\n',$filtered_lines);
$found_lines = 0; $line_index = -1;
foreach ($filtered_lines as $fline) {
$line_index++;
if(strpos($fline, $search) !== false)
{
$found_lines++;
echo $original_lines[$line_index];
}
if ($found_lines == $num_matches){
break; // No more matches, so stop processing additional lines
}
}
}
else{
echo "No matches...";
}
我正在尝试使用以下代码执行 php 搜索:
$search = &q;
$lines = file('file.txt');
// Store true when the text is found
$found = false;
foreach($lines as $line)
{
if(strpos($line, $search) !== false)
{
$found = true;
echo $line;
}
}
// If the text was not found, show a message
if(!$found)
{
echo '';
它搜索每个字符,returns 有时没有结果。我想设置此代码的样式以仅搜索字母和数字,但不包含任何特殊字符,包括点和逗号。我该怎么做? 谢谢。
基本:
// $search contains query
// remove non-alphanumeric characters from search query
$search = preg_replace('[^a-zA-Z\d\s:]','',$search);
// Get unfiltered file into an array
$original_lines = file('file.txt');
$num_matches = 0;
foreach ($original_lines as $line) {
if(strpos(preg_replace('[^a-zA-Z\d\s:]','',$line), $search) !== false){
$num_matches++;
echo $line;
}
}
if (!$num_matches){
echo "No matches.";
}
实验性的,可能内存和处理效率低下:
// $search contains query
// remove non-alphanumeric characters from search query
$search = preg_replace('[^a-zA-Z\d\s:]','',$search);
// Get unfiltered file into an array
$original_lines = file('file.txt');
// Read entire file to string, filtering non-alphanumeric characters
$filtered_lines = preg_replace('[^a-zA-Z\d\s:]','',implode("\n",$original_lines);
// Count the matches
if ($num_matches = preg_match_all($search,$filtered_lines,$matches)){
// Convert back to array with replacements
$filtered_lines = explode('\n',$filtered_lines);
$found_lines = 0; $line_index = -1;
foreach ($filtered_lines as $fline) {
$line_index++;
if(strpos($fline, $search) !== false)
{
$found_lines++;
echo $original_lines[$line_index];
}
if ($found_lines == $num_matches){
break; // No more matches, so stop processing additional lines
}
}
}
else{
echo "No matches...";
}