【问题标题】:PHP Unicode String Extraction - How to split a string and store it into two variable on the basis of position of first non alphabetic character ?PHP Unicode 字符串提取 - 如何根据第一个非字母字符的位置拆分字符串并将其存储到两个变量中?
【发布时间】:2014-03-29 13:04:59
【问题描述】:

我有一个 .txt 文件,其中包含数千个英语单词的列表以及它们在乌尔都语中的含义。 文件结构如下。每行都以一个单词及其 unicode 字符的翻译开头。

dict.txt(编码 UTF-8)

 Sony     سونی (sōnī)
 South Ossetia   جنوبی اوسیتیا (janūbī osetiyā)
 flower (ur-Arab'کھلنا) (unicode'(kʰilnā))
 fly    اڑنا (uṛnā)
 fog    کوہرا (m) (kuhrā)
 .
 .

注意:Sony、fly、fog 等单词的右侧没有空格,为了清楚起见,我添加了它们

到目前为止,我已经这样做了..

$file = fopen("dict.txt",'r');
if ($file) {
while($lines = fgets($file)){
    $word = '';
    $def = ' ';
  //want to extract "word" and its "definition" from $lines
  }
}
    fclose($file);

现在我想将文件的每一行拆分为两个变量,以 $word 和 $def 将它们存储在数据库中,以将它们存储在数据库中以供进一步使用。

我厌倦了使用 preg_match() 和 list()+explode() 但我是一种新手,我的解决方案不起作用。我也厌倦了搜索谷歌但没有找到满意的答案。

我想做什么..

{

如果发现 a-z/A-Z 和空格以外的其他字母,则该刺痛; 将左侧部分存储在变量 $name 中,将右侧部分存储在 $def..

}

提前致谢

【问题讨论】:

    标签: php string split preg-match explode


    【解决方案1】:

    如果格式总是[english][urdu]([pronunciation]),这应该做得很好:

    preg_match('/^([\w\s]+)([\W\s]+)\((.+)\)$/', $line, $matches);
    echo "English: $matches[1], Urdu: $matches[2], pronunciation: $matches[3]";
    

    [\w\s]+ 匹配“单词和空格字符”,[\W\s]+ 是“非单词和空格字符”(“单词”表示 A-Z 和几个字符,如 _),括号中的 .* 是其余部分。见http://rubular.com/r/eHUQFczLah

    【讨论】:

      【解决方案2】:

      怎么样:

      $arr = array(
      "Sony     سونی (sōnī)",
      "South Ossetia   جنوبی اوسیتیا (janūbī osetiyā)",
      "flower (ur-Arab'کھلنا) (unicode'(kʰilnā))",
      "fly    اڑنا (uṛnā)",
      "fog    کوہرا (m) (kuhrā)"
      );
      
      foreach($arr as $val) {
          $list = preg_split('/([\w\s]+)(.+)/', $val, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
          print_r($list);
      }
      

      输出:

      Array
      (
          [0] => Sony     
          [1] => سونی (sōnī)
      )
      Array
      (
          [0] => South Ossetia   
          [1] => جنوبی اوسیتیا (janūbī osetiyā)
      )
      Array
      (
          [0] => flower 
          [1] => (ur-Arab'کھلنا) (unicode'(kʰilnā))
      )
      Array
      (
          [0] => fly    
          [1] => اڑنا (uṛnā)
      )
      Array
      (
          [0] => fog    
          [1] => کوہرا (m) (kuhrā)
      )
      

      【讨论】:

      • 谢谢你 v.much 先生 .. 我没有考虑到数据在文本文件中,所以我可以复制粘贴到 php 数组中
      • @AhtshamKhan:您可以在文件的每条记录上用 while 循环替换 foreach。我这样做只是为了测试。
      猜你喜欢
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      相关资源
      最近更新 更多