3

我对 PHP 有点陌生,并且有一个问题想了解一些不同的想法。我正在编写一个 PHP 脚本,它将作为一个带有介绍部分、几个单选按钮和一个提交按钮的 html 表单打开。当用户单击提交时,我选择了一个静态文本文件(电子书),我希望 PHP 脚本根据用户选择的长度从文件中删除单词(单选按钮标记为 1、2、3 ,ETC)。

这是我一直在玩的:

<?php
    $myTextFile = "ebook.txt";
    $fileContents = get_file_contents($myTextFile);
    $txtTok = strtok("allremoveddelimiters", $myTextFile);

    while ($txtTok != false){
    echo $txtTok;
    $myTok = strtok("allremoveddelimiters");
    }

?>

我已经把我的字符串去掉了所有选择的分隔符,它在一行上全部回显。这就是我陷入困境的地方。我现在需要做的是从文本文件中提取一定长度的单词(用户通过单选按钮选择),然后将更改后的 txt 文件打印到屏幕上。我看过explode() 函数,但我不确定我是否真的理解它。我也玩过 str_replace() 但它似乎没有做我需要的事情,或者我只是不了解完整的功能。另外,我被建议不要使用 preg_() 函数。我假设我想要获取 txt 文件并将所有单词放入一个数组中,然后将用户选择长度的单词拉出,然后将更新后的数组作为字符串打印回来,但到目前为止我还没有

向任何方向推动肯定会受到赞赏。如果需要任何其他信息,请告知。

示例:完整的字符串将包含以下内容 -

如果你没有读过一本名为《汤姆索亚历险记》的书,你就不会了解我;但这没关系。那本书是马克吐温先生写的,他说的主要是实话。有些事情他是在夸大其词,但主要是他说的是实话。那没什么。

如果用户从选项中选择 3 -

如果没有读过一本名为《索耶历险记》的书,就不会了解我;那没关系。马克吐温先生写的那本书,他主要说的是实话。那里他伸展的东西,主要是他说实话。那没什么。

4

1 回答 1

2

快速考虑一下,我建议查看正则表达式。这应该很容易让您根据长度提取单词。但是,它们可能很难理解。

我会把你推向 preg_replace 的方向,http ://php.net/manual/en/function.preg-replace.php 。这将允许您(一旦您拥有工作正则表达式)提取指定长度的单词,并将它们替换为空字符串。

我建议查看http://public.kvalley.com/regex/regex.asp 之类的网站来测试创建的正则表达式。

快速浏览后,我相信以下表达式匹配 4 个字母的单词:

\b(\w{4})\b

将字符串中的 4 替换为要匹配的单词的长度。为了简单地分解正则表达式,\b 代表单词边界(即空格、句号),\w 代表单词字符(字母或数字),{4} 表示匹配前一项 4 次(所以 4字母词)。我相信以下将起作用。

$myReplacedString = preg_replace('/\b(\w{4})\b/', '', $myString);
$myTrimmedString = trim(preg_replace('/\s\s+/', ' ', $myReplacedString));

其中 $myString 是您从文件中获取的字符串。

我希望这能很好地解释它。

于 2012-10-24T15:41:26.623 回答