2015-07-13 3 views
-5

Я видел некоторый вопрос об этой проблеме, но, к сожалению, не нашел свое решение.Разделить строку по номеру и символу в php

У меня есть ниже строки

$s = "ab2|5ac114|25ad" 

Я хочу, чтобы получить результат ниже. Массив имеет три члена

{"ab","ac","ad"} 

посещение Link 1Link 3

+2

Показать ваши усилия. Здесь мы не предоставляем услуги написания кода. –

+0

Я отредактировал обновление, прошу не оценивать – Ali

+0

Кажется, вам просто нужно «взорваться», так как вы уже видели эти другие вопросы. –

ответ

0

Используя PHP preg_match_all() method, вы можете легко отфильтровать только строчные алфавитные символы по шаблону [a-z]. Коэффициент + означает любое число от один и неограниченный. Но если вы всегда ищете 2 символов в нижнем регистре, то вы можете заменить его более конкретным квантора, как {2} поэтому картина будет "/[a-z]{2}/"

<?php 

$subject = 'ab2|5ac114|25ad'; 
preg_match_all("/[a-z]+/", $subject, $matches); 
$result = $matches[0]; 

print_r($result); 
1

Хотя вы должны искать такой простой код для самостоятельно, вы вместо того, чтобы спрашивать первых, вы можете использовать следующий код:

$s = "ab2|5ac114|25ad"; 
$s = explode('|', $s); 
for($i=0; $i<count($s); $i++) 
{ 
    $s[$i] = preg_replace('/[^a-z]/', '', $s[$i]); 
} 

Здесь preg_replace() использует регулярное выражение для замены всех символов, не принадлежащих a-z, ничем, т.е. он просто удаляет их. ^ используется для указания не принадлежащих. Если вы не хотите удалять символы верхнего регистра, просто добавьте A-Z в шаблон регулярного выражения, который затем станет /[^a-zA-Z]/. Если вы уверены, что $s всегда будет содержать ничего, кроме алфавитов и цифр, вы также можете использовать /[0-9]/ (обратите внимание, что это не содержит ^, так что для замены считаются только номера).

Смежные вопросы