好的,我已经对这些问题进行了一些搜索。我找不到任何解决方案。 这就是事情。我有一些带有Unicode文本的段落。我想从特定字符串中提取所有字符,其中存在某些字符串。
$paragraphs = "<p>ареги: сейчас на Десятую, Международную, Конференцию, по</p>
<p>которая состоится: 10-12 марта 1997 года в Майнце в Германии</p>
<p>Конференция соберет: широкий круг экспертов по вопросам глобального</p>
<p>Интернета: и Unicode, локализации и интернационализации, воплощению</p>
<p>жениях: шрифтах, верстке и многоязычных компьютерных системах</p>";
让我们说我想要包含Unicode字符串ареги:的段落内容,您可以在第一段中看到。
在这种情况下,我的结果应该是
ареги: сейчас на Десятую, Международную, Конференцию, по
我更喜欢PHP。
答案 0 :(得分:1)
您尚未指定段落的数据源位置,因此这是使用预定义数组(例如)实现此目的的一种方法:
<?php
// Data Source
$paragraphs = array(
'<p>ареги: сейчас на Десятую, Международную, Конференцию, по</p>',
'<p>которая состоится: 10-12 марта 1997 года в Майнце в Германии</p>',
'<p>Конференция соберет: широкий круг экспертов по вопросам глобального</p>',
'<p>Интернета: и Unicode, локализации и интернационализации, воплощению</p>',
'<p>жениях: шрифтах, верстке и многоязычных компьютерных системах</p>'
);
// Search Function
function search($term, $paragraphs = array()) {
foreach ($paragraphs as $paragraph) {
if (preg_match('/'. $term .'/', $paragraph)) {
return $paragraph;
}
}
return '';
}
// Usage
echo search('ареги', $paragraphs);
?>
编辑v2: 如果数据源是一行html段落,则以上是上述的替代版本:
<?php
// Data Source
$paragraphs = '<p>ареги: сейчас на Десятую, Международную, Конференцию, по</p>
<p>которая состоится: 10-12 марта 1997 года в Майнце в Германии</p>
<p>Конференция соберет: широкий круг экспертов по вопросам глобального</p>
<p>Интернета: и Unicode, локализации и интернационализации, воплощению</p>
<p>жениях: шрифтах, верстке и многоязычных компьютерных системах</p>';
// Search Function
function search($term, $paragraphs) {
$paragraphs = preg_replace('!\s+!', ' ', $paragraphs);
$paragraphs = explode('</p> <p>', $paragraphs);
array_walk_recursive($paragraphs, function(&$para) {
$para = trim($para);
$para = str_replace(array('<p>', '</p>'), '', $para);
});
foreach ($paragraphs as $paragraph) {
if (preg_match('/'. $term .'/', $paragraph)) {
return $paragraph;
}
}
return '';
}
// Usage
echo search('ареги', $paragraphs);
?>
答案 1 :(得分:0)
您可以使用strpos()
或mb_strpos()
如果它对您不起作用,那么您必须确保您的输入是unicode。
小例子:
$paragraphs = '
<p>ареги: сейчас на Десятую, Международную, Конференцию, по</p>
<p>которая состоится: 10-12 марта 1997 года в Майнце в Германии</p>
<p>Конференция соберет: широкий круг экспертов по вопросам глобального</p>
<p>Интернета: и Unicode, локализации и интернационализации, воплощению</p>
<p>жениях: шрифтах, верстке и многоязычных компьютерных системах</p>
';
$pos = strpos( $paragraphs, 'ареги' );
if( $pos === false )
echo 'not found';
else
echo 'found';