我在php上写了一些代码。现在我想绘制仅包含字母和数字字符的单词。但我不能。我在这里写我的代码。实际上我在这个网站(Allow only [a-z][A-Z][0-9] in string using PHP)找到了这个正则表达式。
$fp = fopen('C:\wamp\www\curl\5510.doc','w');
fwrite($fp, $data);
fclose($fp);
$file = doc2text('C:\wamp\www\curl\5510.doc');
@preg_match_all("/^[a-zA-Z0-9]+$/", file_get_contents($file), $fileOnlyAlphabetic);
print_r($fileOnlyAlphabetic);
结果就在这里
Array ( [0] => Array ( ) [1] => Array ( ) )
请帮帮我......
答案 0 :(得分:1)
首先,你应该避免在preg_match_all调用前面写'@'符号,因为那样你就隐藏了潜在的错误。
其次,很可能.doc文件没有任何只包含字母数字字符的行,没有空格,没有标点符号......或没有不可打印的符号。所以,代码运行正常,但你没有使用好的模式。
您应该从正则表达式中移除$字符,以及^字符。 ^字符表示行开头,$字符表示行结束。
doc2text也可能会返回文件内容,而不是其名称或文件描述符,因此您还应该删除preg_match_all中的file_get_contents调用。
尝试使用类似
的内容$fp = fopen('C:\wamp\www\curl\5510.doc','w');
fwrite($fp, $data);
fclose($fp);
$file = doc2text('C:\wamp\www\curl\5510.doc');
preg_match_all("/[a-zA-Z0-9]+/", $file, $fileOnlyAlphabetic);
print_r($fileOnlyAlphabetic);
希望它有所帮助。
答案 1 :(得分:0)
@stribizhev这是您想要的代码
function doc2text($userDoc) {
$fileHandle = fopen($userDoc, 'r');
$word_text = @fread($fileHandle, filesize($userDoc));
$line = "";
$tam = filesize($userDoc);
$nulos = 0;
$caracteres = 0;
for($i=1536; $i<$tam; $i++)
{
$line .= $word_text[$i];
if( $word_text[$i] == 0)
{
$nulos++;
}
else
{
$nulos=0;
$caracteres++;
}
if( $nulos>1996)
{
break;
}
}
//echo $caracteres;
$lines = explode(chr(0x0D),$line);
//$outtext = "<pre>";
$outtext = "";
foreach($lines as $thisline)
{
$tam = strlen($thisline);
if( !$tam )
{
continue;
}
$new_line = "";
for($i=0; $i<$tam; $i++)
{
$onechar = $thisline[$i];
if( $onechar > chr(240) )
{
continue;
}
if( $onechar >= chr(0x20) )
{
$caracteres++;
$new_line .= $onechar;
}
if( $onechar == chr(0x14) )
{
$new_line .= "</a>";
}
if( $onechar == chr(0x07) )
{
$new_line .= "\t";
if( isset($thisline[$i+1]) )
{
if( $thisline[$i+1] == chr(0x07) )
{
$new_line .= "\n";
}
}
}
}
//troca por hiperlink
$new_line = str_replace("HYPERLINK" ,"<a href=",$new_line);
$new_line = str_replace("\o" ,">",$new_line);
$new_line .= "\n";
//link de imagens
$new_line = str_replace("INCLUDEPICTURE" ,"<br><img src=",$new_line);
$new_line = str_replace("\*" ,"><br>",$new_line);
$new_line = str_replace("MERGEFORMATINET" ,"",$new_line);
$new_line = @iconv('UTF-8', 'ISO-8859-9', $new_line);
$new_line = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", ' ', $new_line);
$new_line = mb_strtolower(trim($new_line, '-'),'UTF-8');
$new_line = preg_replace("/[\/_|+ -]+/", " ", $new_line);
$new_line = preg_replace("/[0]/", "i", $new_line);
$new_line = preg_replace("/[1]/", "i", $new_line);
$outtext .= $new_line;
} return $outtext;}
这是'echo $ file'打印。 (因为这个印刷很大,我发布了屏幕截图) enter link description here
答案 2 :(得分:0)
我解决了这个问题。 “@preg_match_all(”/ \ b(([a-z0-9] +))\ b /“,$ file,$ fileOnlyAlphabetic);”当我写这段代码时,我得到了正确的结果。 感谢您的回答。我很高兴:)。