Строки могут выглядеть вот так:
В этом примере англ. и русские слова разделены " " (может быть неск. пробелов)
1.string1-string2_string3 строка1 строка2_строка3
(кол-во тире и подчеркиваний может быть любым, могут быть цифры)
англ. и русские слова разделены " - " (может быть неск. пробелов)
2.string1-string2_string3 - строка1 строка2_строка3
(кол-во тире и подчеркиваний может быть любым, могут быть цифры)
англ. и русские слова разделены "-"
3.string1-string2_string3-строка1 строка2_строка3
(кол-во тире и подчеркиваний может быть любым, могут быть цифры)
Уже все голову сломал, ничего не выходит.
Что на данный момент имею:
<?php
for ($i=0;$i<3;$i++){
$file = array ("r_az-del1 раз-дел1","razd-e-l1 - раз дел2","r-azd_e_l1-раздел3");
//заменяю " - " на "|" с помощью регулярок, а то вдруг будет неск. пробелов.
$file = preg_replace ("#\s+-\s+#",'|',$file[$i]);
$razdel1 = rtrim(preg_replace ("#([0-9a-zA-z\s_-]*)(\s|\||-)*([0-9а-яА-Я\s_-]*)#",'\1',$file),'-_ ');
$razdel2 = rtrim(preg_replace ("#([0-9a-zA-z\s_-]*)(\s|\||-)*([0-9а-яА-Я\s_-]*)#",'\3',$file),'-_ ');
echo $razdel1."<br>";
echo $razdel2."<br>";
}
?>
Итог:
r_az-del1 �<br>
раздел1<br>
razd-e-l1�<br>
раздел2<br>
r-azd_e_l1-�<br>
раздел3<br>
Вконце англ. слова не должно быть ни тире, ни пробела, ни нарушений кодировки(?).
Спустя 4 часа, 21 минута, 21 секунда (16.02.2012 - 07:32) #8bit написал(а):
незнаю пойдет так или нет
$file = array ("r_az-del1 раз-дел1","razd-e-l1 - раз дел2","r-azd_e_l1-раздел3");
for ($i=0; $i<3; $i++)
{
preg_match('#(?:\s|^)([^а-яё\s]*)(?(?=(?:-[а-яё]*)-|(?:$|\s)))#iu', $file[$i], $razdel1);
preg_match('#(?<=[^а-яё0-9a-z])([^a-z]*)(?:$|\s)#iu', $file[$i], $razdel2);
$arr1[] = $razdel1[1];
$arr2[] = $razdel2[1];
}
echo '<pre>';
var_dump($arr1);
echo '</pre><br>';
echo '<pre>';
var_dump($arr2);
echo '</pre>';
Спустя 7 минут, 32 секунды (16.02.2012 - 07:39) #8bit написал(а):
preg_match('#(?:\s|^)([^а-яё\s]*)(?(?=(?:-[а-яё]*)-|(?:$|\s)))#iu', $file[$i], $razdel1);
preg_match('#(?<=[^а-яё0-9a-z])(?=[а-яё])([^a-z]*)(?:$|\s)#iu', $file[$i], $razdel2);
или вот, немного корректней
Спустя 53 минуты, 59 секунд (16.02.2012 - 08:33) idimka39 написал(а):
спасибо большое, все работает! буду думать над вашим примером, чтобы повысить свой уровень.
метасимвол "u" я так понимаю, убрал проблемы с кодировкой?
А почему была использована функция preg_match? В preg_replace также можно сделать или будет хуже в плане производительности?
метасимвол "u" я так понимаю, убрал проблемы с кодировкой?
А почему была использована функция preg_match? В preg_replace также можно сделать или будет хуже в плане производительности?
Спустя 1 час, 2 минуты, 58 секунд (16.02.2012 - 09:36) nugle написал(а):
Match ищет соответствия replace заменяет найденные строки на новыеие