Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Unicode字符串提取-如何分割字符串并根据第一个非字母字符的位置将其存储为两个变量?_Php_String_Split_Preg Match_Explode - Fatal编程技术网

PHP Unicode字符串提取-如何分割字符串并根据第一个非字母字符的位置将其存储为两个变量?

PHP Unicode字符串提取-如何分割字符串并根据第一个非字母字符的位置将其存储为两个变量?,php,string,split,preg-match,explode,Php,String,Split,Preg Match,Explode,我有一个.txt文件,其中包含数千个英语单词的列表,以及它们在乌尔都语中的含义。 文件结构如下所示。每行以一个单词开头,并以unicode字符进行翻译 dict.txt(编码UTF-8) 注意:单词Sony、fly、fog等的右边没有空格,为了清晰起见,我添加了它们 到目前为止我已经做到了 $file = fopen("dict.txt",'r'); if ($file) { while($lines = fgets($file)){ $word = ''; $def = ' '

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

dict.txt(编码UTF-8)

注意:单词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中

}


提前感谢

如果格式总是
[英语][乌尔都语]([发音])
,这应该很好:

preg_match('/^([\w\s]+)([\W\s]+)\((.+)\)$/', $line, $matches);
echo "English: $matches[1], Urdu: $matches[2], pronunciation: $matches[3]";
[\w\s]+
与“单词和空格字符”匹配,
[\w\s]+
是“非单词和空格字符”(“单词”表示A-Z和一些字符,如Z),括号之间的
*
是其余字符。请参见

如何:

$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ā)
)

非常感谢,先生。。我没有考虑到数据是在文本文件中,所以我可以在php中复制粘贴array@AhtshamKhan:您可以在文件的每条记录上用while循环替换foreach。我这样做只是为了测试。
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ā)
)