【发布时间】:2014-08-06 16:00:09
【问题描述】:
我有一个很长的 html 字符串。从这个字符串中,我想解析成对的 rus 和 eng 城市名称。这个字符串的例子是:
$html = ' Абакан Хакасия республика Абан Красноярский край Абатский Тюменская область ';
我的代码是:
$subject = $this->html;
$pattern = '/<a href="([\/a-zA-Z0-9-"]*)">([а-яА-Я]*)/';
preg_match_all($pattern, $subject, $matches);
为了尝试我使用 regexer 。你可以在这里看到它http://regexr.com/399co 在测试中使用了全局修饰符 - /g 因为在 PHP 中我们不能使用 /g 修饰符,所以我使用 preg_match_all 函数。但是 preg_match_all 的结果很奇怪:
Array
(
[0] => Array
(
[0] => <a href="/forecasts5000/russia/republic-khakassia/abakan">Абакан
[1] => <a href="/forecasts5000/russia/krasnoyarsk-territory/aban">Абан
[2] => <a href="/forecasts5000/russia/tyumen-area/abatskij">Аба�
[3] => <a href="/forecasts5000/russia/arkhangelsk-area/abramovskij-ma">Аб�
)
[1] => Array
(
[0] => /forecasts5000/russia/republic-khakassia/abakan
[1] => /forecasts5000/russia/krasnoyarsk-territory/aban
[2] => /forecasts5000/russia/tyumen-area/abatskij
[3] => /forecasts5000/russia/arkhangelsk-area/abramovskij-ma
)
[2] => Array
(
[0] => Абакан
[1] => Абан
[2] => Аба�
[3] => Аб�
)
)
首先 - 它只找到第一个匹配项(但我需要获取所有匹配项的数组) 第二个结果对我来说很奇怪。我想得到下一个结果: 成对的 /forecasts5000/russia/republic-khakassia/abakan 和 Абакан 我做错了什么?
【问题讨论】:
-
请出示您的实际 PHP代码。
-
这正是我希望看到的,你期待什么?
-
2 hjpotter92:添加了代码
-
2 scragar:添加了关于我期望的信息