如何从网页中提取字符串并将其放在PHP变量中

时间:2012-12-14 06:11:01

标签: php javascript

我找到了一个名为mecab的软件,它基本上读取了一个字符串并将这些单词分类为名词,动词等。我要做的是使用Google Search API将搜索功能放在我的页面上,这样每当我查找一个位置,例如牛津街,将展示一些结果,mecab将分别采取这些结果并完成其工作。

我坚持的是我不知道如何将这些结果提供给mecab。

以下是代码:

<html>
<head></head>
<body>
    <script type="text/javascript" src="http://www.google.com/jsapi?key=AIzaSyBX85AAhYSkh66lk8i2VBSqVJSY_462zGM"></script>

<script type="text/javascript">

  function OnLoad()
  {
      // Create Search Control
      var searchControl = new google.search.SearchControl();

      // Add searcher to Search Control
      searchControl.addSearcher( new google.search.WebSearch() );

      searchControl.draw( document.getElementById( 'content' ) );

      // Execute search
      searchControl.execute( '新宿' );

  }


  // Load Google Search API
  google.load( 'search', '1' );

  google.setOnLoadCallback( OnLoad );

</script>
<div id="content">Loading...</div>

<?php
    define('Mecab_Encoding', 'SJIS');
    define('Mecab_ResultEncoding', 'UTF-8');
    define('MeCab_Path', 'mecab.exe');
    function morph_analysis($text) {
      $text = mb_convert_encoding($text, Mecab_Encoding, Mecab_ResultEncoding);
      $descriptorspec = array (
        0 => array ("pipe",   "r"), // stdin
        1 => array ("pipe", "w") // stdout
      );
      $process = proc_open(MeCab_Path, $descriptorspec, $pipes);
      if (is_resource($process)) {
        // Feed string to macab
        fwrite($pipes[0], $text);
        fclose($pipes[0]);
        // Read the string
        while (!feof($pipes[1])) {
          $result .= fread($pipes[1], 4096);
        }
        fclose($pipes[1]);
        proc_close($process);

        $result = mb_convert_encoding($result, Mecab_ResultEncoding, Mecab_Encoding);
        $lines = explode("\r\n", $result);
        $res = array();
        foreach($lines as $line) {
          if(in_array(trim($line), array('EOS', ''))) {continue;}
          $s = explode("\t", $line);
          $word = $s[0];
          $words = explode(',', $s[1]);

      if ($words[0] == "名詞"){
              $res[] = array(
                'word' => $word,
                'class' => $words[0],
                'detail1' => $words[1],
                'detail2' => $words[2],
                'detail3' => $words[3],
                'conjugation1' => $words[4],
                'conjugation2' => $words[5]
              );
      }
        }
        return $res;
      } else {
        return false;
      }
    }

$text ="今日はいい天気です。";
$result = morph_analysis($text);

echo "<pre>";
print_r($result);
echo "</pre>";

?>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

所以你基本上有一个div,它填充了你想要传递给PHP的javascript API中的内容。最简单的方法是通过javascript对PHP脚本进行ajax调用,就像API填充页面一样。除此之外,您将把内容交给PHP并返回一个结果,然后您可以将其放在页面中的任何位置,例如您想要的另一个 div

<div id="content">Loading...</div>

您可以使用javascript文档的getElementById属性访问此内容。

<script>
$.ajax({
  type: "POST",
  data: {"text": document.getElementById('content').innerHTML },
  url: "http://www.example.com/your-php-script.php", // put the URL to your PHP script here
}).done(function ( data ) {
  document.getElementById('myOutPutDiv').innerHTML = data;
});
</script>

然后你的HTML将有适当的div输出

<div id="myOutPutDiv">Output goes here...</div>

然后在PHP脚本中,您将收到$ _POST / $ _ REQUEST超级全局数据......

<?php
    $text = $_POST['text']; // This is the stuff you got from your javascript

    /* Work with $text here */

请务必将PHP与javascript内容分开,因为它们将独立行动。